プロが教えるわが家の防犯対策術!

System32のパスをプログラムVC++のプログラム上で探す方法がわかりません。

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

A 回答 (5件)

#1の訂正です。



質問者の環境はWindows2000とXPでしたね。#1のレジストリキーはWindows98、98SEにしかありませんでした。

Windows98、98SE、XP、2000のどれでも動くようにするのであれば、レジストリの
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer
のキーにある
InstallerLocation
の値を使うのが良いと思います。

この回答への補足

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

補足日時:2004/01/17 15:20
    • good
    • 0

>具体的にどのように使えばいいでしょうか。


>ソースコードがほしいです。

レジストリへのアクセスは、MFCのソースコードのAPPUI2.CPP APPUI3.CPPを参考にすると良いでしょう。

参考URLにAPPUI2.CPP APPUI3.CPPがあります。

参考URL:http://www.et.utt.ro/public/ProgLangs/VisualStud …
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/01/17 17:08

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 では試してませんが。
    • good
    • 1

環境変数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 ;
}
    • good
    • 0

レジストリの


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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!