【问题标题】:RegCreateEx return 5 Access Denied on Windows 7RegCreateEx 在 Windows 7 上返回 5 访问被拒绝
【发布时间】:2011-08-08 13:07:17
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以使用 regedit.exe 手动创建密钥吗?也许这是一个权限问题。另外,您是否在相同平台(32 位或 64 位)上针对您提到的 Windows 版本进行了测试?
  • 并非没有更多信息。您要在哪里创建密钥(HKLM,HKCU)?你怎么打开钥匙? “普遍推出”是什么意思?

标签: windows-7 registry


【解决方案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 位应用程序访问密钥。

【讨论】:

  • 在 Windows 7 上,这基本上无处不在。不对。 HKCU是一个明显的例外。请注意,UAC 是在 Vista 中引入的,因此从 Vista 到 7 对此主题没有任何重要更改。很少需要注册表视图标志,因为重定向通常会为您处理它。如果代码是从 32 位进程运行的,则重定向器会处理这些事情。最后,建议解决方案涉及手动创建密钥和分配权限对于程序员的站点不是很有帮助。这里真正的问题是一个不应该回答的不准确的问题。
猜你喜欢
  • 2011-04-29
  • 2021-09-04
  • 2012-07-23
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多