繁体   English   中英

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

[英]Enable access to registry in WinForms application of C# .Net

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

若要允许用户编辑通常无法访问的某些注册表设置,您需要使用模拟。 也就是说,您需要让您的应用程序以其他用户身份(具有更多特权)运行。

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

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

我猜您的应用程序可以在Vista或Win7上运行,而您无权访问HKEY_LOCAL_MACHINE。 为了在该区域中编辑注册表值,您需要在项目中添加一个清单,并在其中添加以下行:

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

我非常确定您的管理员已使用“防止访问注册表编辑工具”组策略设置来禁用对Regedit.exe的访问-这就是为什么您收到“管理员已禁用注册表编辑”消息的原因。

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

在名称空间上方使用程序集属性RegistryPermissionAttribute()

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, ViewAndModify = "HKEY_CURRENT_USER")]
//SecurityAction is enum having different security parameters

暂无
暂无

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

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