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

Windows 7 在Windows 7上,RegCreateEx返回5访问被拒绝,windows-7,registry,Windows 7,Registry,我有一个使用API RegCreateKeyEx的程序,它在WinXP和Vista上运行得非常好 程序通常以提升的权限启动。 当我尝试在Windows7中使用相同的程序时,RegCreateKeyExAPI返回5(拒绝访问) 知道如何解决这个问题吗?当您试图在注册表中没有写访问权限的部分创建一个项时,会发生此错误。在Windows7上,这基本上无处不在 为了增加XP/7之间32位应用程序的兼容性,建议您在注册表的32位视图中创建该项。修改调用以包含掩码键\u WOW64\u 32KEY,使其使用

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

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


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

当您试图在注册表中没有写访问权限的部分创建一个项时,会发生此错误。在Windows7上,这基本上无处不在

为了增加XP/7之间32位应用程序的兼容性,建议您在注册表的32位视图中创建该项。修改调用以包含掩码
键\u WOW64\u 32KEY
,使其使用32位视图:

result = RegCreateKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Foo"),
    NULL, NULL, NULL, KEY_ALL_ACCESS | KEY_WOW64_32KEY, NULL, &hkey, &disposition);
然后首先在注册表中的
HKEY\u LOCAL\u MACHINE\SOFTWARE\Wow6432Node\Foo
下手动创建密钥。编辑权限并给予自己(或所有人)完全控制权


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

您可以使用regedit.exe手动创建密钥吗?也许这是许可问题。另外,您是否在同一平台(32位或64位)上测试了您提到的Windows版本?没有更多信息。您试图在何处创建密钥(HKLM、HKCU)?你怎么打开钥匙的?“一般启动”是什么意思?在Windows7上,这基本上无处不在。不是真的。香港大学是一个明显的例外。请注意,UAC是在Vista中引入的,因此本主题的重要内容从Vista改为7。很少需要注册表视图标志,因为重定向通常会为您处理它。如果代码是从32位进程运行的,那么重定向器会处理这些事情。最后,建议解决方案包括手动创建密钥和分配权限,这对程序员的站点没有多大帮助。这里真正的问题是一个毫无希望的不精确问题,不应该回答。