繁体   English   中英

如何允许我的 .NET 应用程序的注册表(写入)访问?

[英]How to allow registry (write) access fo my .NET application?

我收到错误消息:

请求的注册表访问被拒绝

当尝试在打开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”吗? 还是有其他方法可以访问我的注册表项?

谢谢你。

如果您希望写入HKLM下的密钥,则需要一个提升的进程。 这是通过在应用程序清单中将requestedExecutionLevel设置为requireAdministrator来实现的。

进行此更改意味着您的应用程序每次运行时都会显示一个 UAC 提升对话框。 这无疑会让人恼火,所以这里有一些避免这种刺激的选择:

  1. 写入标准用户具有写入权限的HLKM以外的地方。
  2. 在安装程序中执行对HLKM的写入。
  3. 如果仅在程序中偶尔使用的功能需要写入HLKM ,请安排您按需提升。

选项 3 需要稍加阐述。 进程一旦启动就无法提升。 您只能在流程开始时提升。 因此,为了实现选项 3,您需要该功能存在于单独的进程中或进程外 COM 服务器中。 如果您沿着这条路线走 go,请记住在任何导致 UAC 对话框的 UI 元素上包含盾牌图标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM