在C#.Net的WinForms应用程序中启用对注册表的访问

时间:2010-11-16 09:58:12

标签: c# .net windows registry

默认情况下:已禁用注册表 所以我得到“管理员已禁用注册表编辑” 在我的应用程序中,我想让用户在应用程序运行时访问注册表,并在应用程序停止时拒绝。 期待您的建议。

4 个答案:

答案 0 :(得分:1)

要允许用户编辑通常无法访问的某些注册表设置,您需要使用模拟。即您需要让您的应用程序以不同的用户身份运行,具有更多权限。

实现此目的的最简单方法是编写以更高权限运行的.net Windows服务。此服务仍然可以控制允许更改的注册表设置。 因此,您的用户启动您的Winforms应用程序,该应用程序与您的服务进行通信,以便在注册表中进行实际更改。

这确实需要用户(或操作)在具有管理员权限的计算机上安装服务。

答案 1 :(得分:0)

我猜您的应用程序在Vista或Win7上运行,而您无法访问HKEY_LOCAL_MACHINE。要编辑该区域中的注册表值,您需要在项目中添加清单并将此行添加到其中:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

答案 2 :(得分:0)

我很确定您的管理员已使用“阻止访问注册表编辑工具”组策略设置禁用了对 Regedit.exe 的访问权限 - 这就是您获得“注册表编辑工具”的原因被您的管理员“消息”禁用。

但这并不影响对注册表的访问。例如,您的应用程序仍然可以使用RegistryKey类访问和修改注册表(至少是HKCU)。

答案 3 :(得分:0)

在命名空间

上方使用汇编属性RegistryPermissionAttribute()
[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify = "HKEY_CURRENT_USER")]
//SecurityAction is enum having different security parameters