gpt4 book ai didi

c++ - RegOpenKeyEx 访问拒绝读取 HKEY_LOCAL_MACHINE

转载 作者:太空宇宙 更新时间:2023-11-04 11:32:54 29 4
gpt4 key购买 nike

在 Windows 7(32 位)中,如果我不是在管理员模式下运行,当我在 HKEY_LOCAL_MACHINE 上调用::RegOpenKeyEx 时,我总是会收到错误 5(访问被拒绝)。

这是我的代码:

result = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\MyCompany\\MyApp"), 0, KEY_QUERY_VALUE, &keySoftware)

我正在尝试构建一个可以为整台机器而不是特定用户安装的应用程序。因此我的安装程序(在管理员模式下运行)写入 HKEY_LOCAL_MACHINE,并且安装程序工作正常。

我希望我的应用程序能够读取我的安装程序已放入注册表中的数据。我不想更改任何注册表数据。我也尝试过使用 KEY_READ 和 KEY_EXECUTE 而不是 KEY_QUERY_VALUE。但似乎无论我做什么,我都无法在不使用提升状态的情况下从 HKEY_LOCAL_MACHINE 读取数据。我在这里缺少什么?

最佳答案

您的安装程序需要调整注册表项的安全权限,以便允许非管理员用户访问它。看看RegSetKeySecurity() ,或您的安装程序的等效工具,或任何数量的可用命令行工具。您可以创建一个 DACL,为 Everyone 用户组或特定用户帐户启用只读访问权限。

更新:由于您使用的是 Inno Setup,请在您的注册表设置中尝试此操作:

[Registry]
Root: HKLM; Subkey: "Software\MyCompany\MyApp"; Permissions: everyone-read

或者:

[Registry]
Root: HKLM; Subkey: "Software\MyCompany\MyApp"; Permissions: users-read

关于c++ - RegOpenKeyEx 访问拒绝读取 HKEY_LOCAL_MACHINE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23942176/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com