-1

標準ユーザーとして Windows 7 の HKEY_CURRENT_USER\Software\Classes から値を読み取ろうとしていますが、キーは存在しますが、エラーが発生します。以下の両方のコードは成功しません。

l = RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\\Classes", 0, KEY_READ, &hKey);

// RegOpenKeyEx doesn't success either
l = RegOpenKey(HKEY_CURRENT_USER, L"Software\\Classes", &hKey);

このコードは、多くのことを行うアプリケーションによって呼び出されるdllにあります (それが何をしているのかはわかりません)。

ただし、同じアカウント同じコンピューターRegOpenKeyだけを使用する単純なアプリは完全に機能します...

問題の原因と2つの違いを教えてもらえますか? テスト アプリは c++ で記述されていますが、dll は c で記述されています。

編集: L"Software\Classes" の前の "L" を削除するだけで問題は解決しました...

4

2 に答える 2

2

コードが別のユーザーとして実行されているか、現在のユーザーがプロセスのキャッシュされたレジストリ キーと同期していない可能性があります。RegOpenCurrentUserを参照してください。

于 2012-03-02T13:09:34.420 に答える
-1

L"Software\Classes" の代わりに "Software\Classes" を関数に渡すことで問題を解決しました。

于 2012-03-02T16:34:10.730 に答える