2014-06-11 4 views
1
RegistrySecurity rs = new RegistrySecurity(); 

RegistryKey rk = 
RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32). 
OpenSubKey("SOFTWARE\\MyApplication", true); 

rs.AddAccessRule(new RegistryAccessRule("Everyone", 
RegistryRights.WriteKey | RegistryRights.ReadKey | RegistryRights.Delete, 
         InheritanceFlags.None, 
         PropagationFlags.None, 
         AccessControlType.Allow)); 

레지스트리에서 소프트웨어의 특정 폴더에 대한 모든 시스템 사용자에게 쓰기 권한을 부여하려고합니다. 하지만 난 C# 코드를 사용하여이 일을 couldnt. 이 픽스에서 나를 내보내 줘.쓰기 가능한 레지스트리 권한

+0

는 대신 "폴더"의 "레지스트리 키"를 찾으시는 것입니까? – Gusman

+0

또한 귀하의 문제는 무엇입니까? – Gusman

+0

실제로 나는 소프트웨어 아래서 만 특정 폴더에 대해 fullcontroll을 제공하려고 시도하고 있지만 위와 같은 작업을하지 않고 코드를 수행하지 않습니다. – user3728859

답변

3

// 완벽한 솔루션 :

 RegistrySecurity rs = new RegistrySecurity(); 
     RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\ASUS", true); 
     rs.AddAccessRule(new RegistryAccessRule("Everyone", RegistryRights.WriteKey | RegistryRights.ReadKey, InheritanceFlags.None, PropagationFlags.None, AccessControlType.Deny)); 
     if(rk != null) 
     { 
      rk.SetAccessControl(rs); 
     } 
+0

rk.setAccessContro; (rs)도 시도했지만 "System.NullRefernceException : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다"로 표시됩니다. 내가 지금 무엇을합니까 ??? – user3728859

+0

RegistrySecurity rs = 새 RegistrySecurity(); RegistryKey rk = RegistryKey.OpenBaseKey (RegistryHive.LocalMachine, RegistryView.Registry32) .OpenSubKey ("SOFTWARE \\ ASUS", true); rs.AddAccessRule (새 RegistryAccessRule ("모두", RegistryRights.WriteKey | RegistryRights.ReadKey, InheritanceFlags.None, PropagationFlags.None, AccessControlType.Deny)); rk.SetAccessControl (rs); MessageBox.Show ("success"); – user3728859

+0

확인해주십시오. 답변을 수정했습니다. – Bayeni