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

发布于 2024-11-02 15:58:16 字数 164 浏览 0 评论 0原文

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

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

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

I have one program that uses API RegCreateKeyEx and that works perfectly fine on WinXP and Vista.

Program is generally launched in elevated privileges .
When I try to use same program in Windows 7 , RegCreateKeyEx API is returning 5 (access denied).

Any idea how to resolve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

软甜啾 2024-11-09 15:58:16

当您尝试在注册表中没有写入权限的部分创建密钥时,会出现此错误。在 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 位应用程序访问密钥。

This error occurs when you're trying to create a key in a portion of the registry where you don't have write access. On Windows 7, this is basically everywhere.

To increase compatibility of 32 bit applications between XP/7 it's suggested you create the key in the 32 bit view of the registry. Modify your call to include the mask KEY_WOW64_32KEY so it uses the 32 bit view:

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

Then create the key first in the registry manually under HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Foo. Edit the permissions and give yourself (or everyone) Full Control.

You should now be able to access the key from a 32 bit application.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文