電子書籍の厳選無料作品が豊富!

Visual Studio C++ .NET 2003でレジストリの値を変更するコンソールアプリケーションを作りたいのですが、
RegQueryValueExで値を読み出すことができません。

下記のようにするとPathLenは正しく読み出せているのですが肝心のPathに何も格納されていないようです。

また4番目の引数はREG_SZが正しいように思えるのですがNULLでないと実行時に
"ハンドルされていない例外:System.NullReferenceException:オブジェクト参照がオブジェクト インスタンスに設定されていません"
というメッセージが出て途中終了してしまいます。

どなたかよろしくお願い致します。


longlRet;
HKEYhkResult;
CStringRes;
charPath[256];
longPathLen=0;


//レジストリのハンドルと環境変数のレジストリをリードモードでオープン
lRet = RegOpenKeyEx(
HKEY_USERS,
"S-1-5-21-842925246-1563985344-1957994488-500\\Environment",
0,
KEY_ALL_ACCESS,
&hkResult
);

if(lRet == ERROR_SUCCESS) {
//現在のパスを読み込む
PathLen = strlen(Path);
RegQueryValueEx(
hkResult,
"NEWVALUE",
NULL,
/*(LPDWORD)REG_SZ,*/NULL,
(LPBYTE)Path,
(LPDWORD)&PathLen
);
}


printf("%s\n", Path);printf("%ld\n", PathLen);
//ハンドルをクローズ
RegCloseKey(hkResult);

インデントができなかったので見づらくてすみません。

A 回答 (2件)

>PathLen = strlen(Path);



のところで、PathLenは0になってるんじゃないですか?
たぶん・・・。
    • good
    • 0
この回答へのお礼

全くその通りでした。
実は質問した後で気づいたのでしまったと思っていたのですが・・・。

ありがとうございました。

お礼日時:2004/02/20 12:43

1. 失敗したときの戻り値は?


2. KEY_ALL_ACCESSにしないといけませんか?
3. 実行しているユーザに管理者権限ありますか?

http://www.microsoft.com/japan/developer/library …

参考URL:http://www.microsoft.com/japan/developer/library …
    • good
    • 0
この回答へのお礼

質問した後、戻り値を調べてみたところ 234 MORE_DATAなんとかだったので下のように間違いに気づきました。

ありがとうございました。

お礼日時:2004/02/20 12:45

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