• ベストアンサー

System32のパス取得方法

System32のパスをプログラムVC++のプログラム上で探す方法がわかりません。 Windows2000ProとWindowsXPのSystem32のパスが違うので プログラム上で動的に取得したいと思います。 Windows2000:C:\WINNT\system32 WindowsXP:C:\Windows\system32 になっていますがこのパスを動的に取得したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

#1の訂正です。 質問者の環境はWindows2000とXPでしたね。#1のレジストリキーはWindows98、98SEにしかありませんでした。 Windows98、98SE、XP、2000のどれでも動くようにするのであれば、レジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer のキーにある InstallerLocation の値を使うのが良いと思います。

jaekuk
質問者

補足

回答ありがとうございます。 具体的にどのように使えばいいでしょうか。 ソースコードがほしいです。

その他の回答 (4)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.5

>具体的にどのように使えばいいでしょうか。 >ソースコードがほしいです。 レジストリへのアクセスは、MFCのソースコードのAPPUI2.CPP APPUI3.CPPを参考にすると良いでしょう。 参考URLにAPPUI2.CPP APPUI3.CPPがあります。

参考URL:
http://www.et.utt.ro/public/ProgLangs/VisualStudio6/vc98/mfc/src/
jaekuk
質問者

お礼

ありがとうございました。 おかげさまで解決しました。

noname#5537
noname#5537
回答No.4

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)
回答No.2

環境変数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)
回答No.1

レジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup のキーにある SysDir の値を使うか、同じキー位置にある WinBootDir の値に"\\SYSTEM32\\"を付加するか、API関数の GetSystemDirectory で得られる値に"SYSTEM32\\"を付加すれば良いと思います。

関連するQ&A