public static void SetAccessControl(this RegistryKey key, RegistrySecurity registrySecurity) { if (key == null) { throw new ArgumentNullException(nameof(key)); } key.SetAccessControl(registrySecurity); }
private static void SetUserAccess(RegistryKey registryKey, IdentityReference user, RegistryRights accessType) { RegistrySecurity registrySecurity = registryKey.GetAccessControl(); RegistryAccessRule rule = new RegistryAccessRule( user, accessType, InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow ); registrySecurity.AddAccessRule(rule); registryKey.SetAccessControl(registrySecurity); }
void copyregkey(RegistryKey src, RegistryKey dest) { if (src != null) { RegistrySecurity srcac = src.GetAccessControl(); RegistrySecurity destac = new RegistrySecurity(); string descriptor = srcac.GetSecurityDescriptorSddlForm(AccessControlSections.Access); destac.SetSecurityDescriptorSddlForm(descriptor); dest.SetAccessControl(destac); string[] valuenames = src.GetValueNames(); foreach (string valuename in valuenames) { Trace.WriteLine("Copy " + src.Name + " " + valuename + " : " + dest.Name); dest.SetValue(valuename, src.GetValue(valuename)); } string[] subkeynames = src.GetSubKeyNames(); foreach (string subkeyname in subkeynames) { Trace.WriteLine("DeepCopy " + src.Name + " " + subkeyname + " : " + dest.Name); copyregkey(src.OpenSubKey(subkeyname), dest.CreateSubKey(subkeyname)); } } }
public static void SetAccessControl(RegistryKey key, RegistrySecurity registrySecurity) { key.SetAccessControl(registrySecurity); }