- ベストアンサー
System32のパス取得方法
System32のパスをプログラムVC++のプログラム上で探す方法がわかりません。 Windows2000ProとWindowsXPのSystem32のパスが違うので プログラム上で動的に取得したいと思います。 Windows2000:C:\WINNT\system32 WindowsXP:C:\Windows\system32 になっていますがこのパスを動的に取得したいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1の訂正です。 質問者の環境はWindows2000とXPでしたね。#1のレジストリキーはWindows98、98SEにしかありませんでした。 Windows98、98SE、XP、2000のどれでも動くようにするのであれば、レジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer のキーにある InstallerLocation の値を使うのが良いと思います。
その他の回答 (4)
- chie65536
- ベストアンサー率41% (2512/6032)
>具体的にどのように使えばいいでしょうか。 >ソースコードがほしいです。 レジストリへのアクセスは、MFCのソースコードのAPPUI2.CPP APPUI3.CPPを参考にすると良いでしょう。 参考URLにAPPUI2.CPP APPUI3.CPPがあります。
お礼
ありがとうございました。 おかげさまで解決しました。
GetSystemDirectory でよいのでは? #include <stdio.h> #include <windows.h> int main(int argc, char* argv[]) { TCHAR buf[MAX_PATH+1]; ::GetSystemDirectory(buf, MAX_PATH+1); puts(buf); return 0; } # XP では試してませんが。
- arukamun
- ベストアンサー率35% (842/2394)
環境変数SystemRootを見れば良いですね。 16ビットコンパイラであれば、 getenv() 32ビットWinAPI対応のコンパイラであれば、 GetEnvironmentVariable() 関数で取得出来ます。 例 #include <stdio.h> #include <windows.h> int main() { char env[256] ; GetEnvironmentVariable("SystemRoot",env,256); printf("%s\\System32\n",env); return 0 ; }
- chie65536
- ベストアンサー率41% (2512/6032)
レジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup のキーにある SysDir の値を使うか、同じキー位置にある WinBootDir の値に"\\SYSTEM32\\"を付加するか、API関数の GetSystemDirectory で得られる値に"SYSTEM32\\"を付加すれば良いと思います。
補足
回答ありがとうございます。 具体的にどのように使えばいいでしょうか。 ソースコードがほしいです。