Visual Studio2010のデバッガーでWindows764ビットのC++プログラム(32ビットWin XPでうまく機能します)を実行していますが、次のコードで既存のレジストリキーを開くことができません。
#define ACCESS (KEY_WRITE | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS)
HKEY hKey;
long dwErrorCode = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\MYTHING", 0, ACCESS|KEY_WOW64_64KEY, &hKey);
if (dwErrorCode != ERROR_SUCCESS)
{
// display error message
}
返されるエラーコードは次のとおりです。5「アクセスが拒否されました」というシステムメッセージが表示されます。
これは、Visual Studio 2010を管理者として実行している場合は機能しますが、実行する必要はありません。誰かが提案を提供できますか?
更新:言及するのを忘れました。ここで行っているのは、WindowsXPからのレガシーコードの移植です。そのため、このソフトウェアの作成方法の基本構造を変更するオプションはありません。レガシーコードはレジストリを使用するため、移植されたコードもレジストリを使用する必要があります。
また、特定のコンピューターに変更を加えたくはありません。つまり、これを実行するすべてのコンピューターを変更する必要があるためです。影響を受けるマシンがたくさんあるため、これは厄介になる可能性があります。たとえば、マシン全体でUACをオフにしたくありません。
さらなる更新:私は満足している解決策を見つけられませんでした。デバッグの目的でエラーコード5を無視することにしましたが、今のところ十分に機能しているようです。Word、Firefoxなどの標準アプリがすべての種類の設定でレジストリを使用しているように見えるが、昇格されていないことや、レジストリを変更するための特別な権限を付与する必要がないことを理解しようとしていますか?