Я пытаюсь заблокировать раздел реестра с некоторой важной информацией, которая должна быть доступна на клиентском компьютере, я не хочу, чтобы не администраторы имели доступ к этому ключу. Если вы являетесь администратором, вы уже сможете нанести больше урона, чем то, что я храню в ключе.
То, что я сейчас хочу сделать, это:
//Allow access only to administrators and deny all rights to everyone else.
System.Security.AccessControl.RegistrySecurity acl =
new System.Security.AccessControl.RegistrySecurity();
acl.AddAccessRule(
new System.Security.AccessControl.RegistryAccessRule(
"Administrators",
System.Security.AccessControl.RegistryRights.FullControl,
System.Security.AccessControl.AccessControlType.Allow));
acl.AddAccessRule(
new System.Security.AccessControl.RegistryAccessRule(
"Everyone",
System.Security.AccessControl.RegistryRights.FullControl,
System.Security.AccessControl.AccessControlType.Deny));
//Prevent inherited read access from the software or company key allowing access.
acl.SetAccessRuleProtection(true, false);
MyKey.SetAccessControl(acl);
Если я правильно понял, это запретит доступ всем, явно разрешит доступ кому-либо в группе администраторов и запретит применение всех унаследованных разрешений к моему ключу? Я предпочел бы выяснить, сработает ли это, прежде чем я испорчу ACL на ключе, так что я не смогу удалить его и т. Д. Должен ли я назначить владельцем ключа также группу администраторов?
PS: очень важно, чтобы ключ даже не читался как администратор, а не просто менялся.