2015-03-18 119 views
0

我试图在管理员命令提示符下使用以下代码删除USBSTOR注册表项。C#删除注册表项访问被拒绝

void DeleteRegistryKeys() 
{ 
    string keyOne = @"SYSTEM\CurrentControlSet\Enum\"; 
    using (RegistryKey key = Registry.LocalMachine.OpenSubKey(keyOne, true)) 
    { 
     if(key != null) 
     { 
      key.DeleteSubKeyTree("USB"); 
      key.DeleteSubKeyTree("USBSTOR"); 
     } 

    } 
} 

我得到一个System.Security.SecurityException:请求的注册表访问是不允许的。有没有人知道这个工作?

我试图以管理员身份运行,但不起作用。 我已经添加有

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

的app.manifest文件,但似乎并没有帮助程序运行无论是。

+0

您是否需要'keyone'变量中尾部的'“\” – MethodMan 2015-03-18 21:12:01

+0

出现错误是否与尾部相同\ – samack 2015-03-18 21:22:13

+0

您是否在系统中启用了UAC?我的意思是你的代码真的获得管理权限?你可以通过[IsInRole](https://msdn.microsoft.com/en-us/library/46ks97y7.aspx)方法检查它 – rum 2015-03-18 22:24:44

回答

0

在我的情况下,首先我只是在项目文件夹中添加了app.manifest文件,但失败了。

然后我在Project> Properties> Application> Resources> Icon and manifest> Manifest(VS 2017)中设置了app.manifest文件。它的工作原理。