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

时间:2011-08-10 06:35:19

标签: c# .net registry uac

我收到了错误消息:

请求的注册表访问被拒绝

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”吗?或者还有其他方法可以访问我的注册表项?

谢谢。

1 个答案:

答案 0 :(得分:6)

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

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

  1. 写入标准用户具有写访问权限的HLKM以外的其他位置。
  2. 在安装程序中执行对HLKM的写入。
  3. 如果仅在程序中偶尔使用的功能需要写入HLKM,请安排按需提升。
  4. 选项3需要一点阐述。一旦进程启动,您就无法提升它。您只能在流程开始时提升。因此,为了实现选项3,您需要将该功能存在于单独的进程或进程外的COM服务器中。如果沿着这条路走下去,请记住在导致UAC对话的任何UI元素上包含盾牌图标。