如何在C#中获取注册表写入权限

Unk*_*ech 7 c#

我正在尝试写入HKEY_CURRENT_USER\Software\appname的Windows注册表,但是当我尝试写入密钥时,我一直收到权限错误,我已将以下内容添加到我的程序集中:

[assembly: RegistryPermissionAttribute(SecurityAction.RequestMinimum, Write = @"HKEY_CURRENT_USER\\Software")]
Run Code Online (Sandbox Code Playgroud)

但这还没有解决问题,我还应该做些什么吗?

Jon*_*eet 8

我不认为这是一个简单的事情,你打开密钥而没有指定你想要写访问?该OpenSubKey(string)方法仅提供只读访问权限.


Dav*_*man 7

RegistryPermissionAttribute是部分代码访问安全又称CAS,这是一种许可制度,检查你的.NET框架内的权限,这些权限由安全策略定义.有4个安全策略:

  • 企业 - 作为Active Directory安装一部分的一系列计算机的策略.
  • 机器 - 当前机器的策略.
  • 用户 - 登录用户的策略.
  • AppDomain - 执行应用程序域的策略.

前三个配置在.NET配置工具的配置屏幕中,最后一个配置在运行时.

我之所以解释这个问题的原因是因为RegistryPermissionAttribute只检查您的.NET权限,而不检查操作系统权限.

您可以使用System.Security.AccessControl来检查操作系统权限,但要获取您可能需要升级或模拟的权限.