RegCreateEx在Windows 7上返回5拒绝访问

时间:2011-04-19 09:54:31

标签: windows-7 registry

我有一个使用API​​ RegCreateKeyEx的程序,它在WinXP和Vista上运行得非常好。

程序通常以提升的权限启动。 当我尝试在Windows 7中使用相同的程序时,RegCreateKeyEx API返回5(访问被拒绝)。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:-1)

当您尝试在注册表中没有写入权限的部分创建密钥时,会发生此错误。在Windows 7上,这基本上无处不在。

为了提高XP / 7之间32位应用程序的兼容性,建议您在注册表的32位视图中创建密钥。修改您的调用以包含掩码KEY_WOW64_32KEY,以便它使用32位视图:

result = RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Foo"),
    NULL, NULL, NULL, KEY_ALL_ACCESS | KEY_WOW64_32KEY, NULL, &hkey, &disposition);

然后在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Foo下手动在注册表中首先创建密钥。编辑权限并给自己(或每个人)完全控制。

您现在应该能够从32位应用程序访问密钥。