我收到了错误消息:
请求的注册表访问被拒绝
在 UAC 打开 时尝试写到注册码键时
RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, "")
tawkey.OpenSubKey(x, true).SetValue(X, V, RegistryValueKind.DWord)
在我的软件安装过程中,我必须运行“subinacl / subkeyreg HKEY_LOCAL_MACHINE \ PathToMyKeys ... / grant = user = f”吗?或者还有其他方法可以访问我的注册表项?
谢谢。
答案 0 :(得分:6)
如果您希望写入HKLM
下的密钥,则需要提升流程。这可以通过在应用程序清单中将requestedExecutionLevel
设置为requireAdministrator
来实现。
进行此更改意味着您的应用程序每次运行时都会显示一个UAC提升对话框。这无疑会令人恼火,所以这里有一些避免这种刺激的选择:
HLKM
以外的其他位置。HLKM
的写入。HLKM
,请安排按需提升。选项3需要一点阐述。一旦进程启动,您就无法提升它。您只能在流程开始时提升。因此,为了实现选项3,您需要将该功能存在于单独的进程或进程外的COM服务器中。如果沿着这条路走下去,请记住在导致UAC对话的任何UI元素上包含盾牌图标。