Я пытаюсь заблокировать раздел реестра с некоторой важной информацией, которая должна быть доступна на клиентском компьютере, я не хочу, чтобы не администраторы имели доступ к этому ключу. Если вы администратор, вы уже сможете нанести больше вреда, чем я храню в ключе.
Сейчас я хочу сделать следующее:
//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: Очень важно, что ключ не может быть прочитан даже не администратором, а не просто изменен.