2011-03-21 159 views
4

我想更改注册表项的权限,并且希望将其设置为只读。我怎样才能做到这一点?更改注册表权限

我试过这种方法,但它不会改变任何东西:

RegistryPermission rp = new RegistryPermission(
    RegistryPermissionAccess.Read, 
    "HKEY_LOCAL_MACHINE\\SOFTWARE\\paci_1\\identity\\ASPNET_SETREG" 
); 
rp.AddPathList(
    RegistryPermissionAccess.Read, 
    "HKEY_LOCAL_MACHINE\\SOFTWARE\\paci_1\\identity\\ASPNET_SETREG" 
); 

另外,我怎么能做到这一点用户或管理员或所有者等?

回答

2

我认为你想要的类是RegistrySecurity。它记录在here

它应该是这个样子:

using(RegistryKey rk = 
    Registry.LocalMachine.OpenSubKey(@"SOFTWARE\paci_1\identity\ASPNET_SETREG")) 
{ 
    string gname = Environment.UserDomainName + @"\" + Environment.UserName; 
    RegistrySecurity rs = new RegistrySecurity(); 
    rs.AddAccessRule(new RegistryAccessRule(gname, RegistryRights.ReadKey, AccessControlType.Allow)); 
    rk.SetAccessControl(rs); 
} 

当然,你将与你选择的域限定用户名替换gname

+1

请确保您在'rk'上调用'Dispose'(或者将其创建包装在'using'语句中)。 – 2012-07-22 07:09:23