Я работаю над ассоциациями файлов. Я определил, что есть ключ с именем UserChoice
в:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[ext].
Я смог прочитать и записать ключ UserChoice
при условии, что I его создаст и что он не уже создан Windows. Однако, если UserChoice
ключ уже уже создан Windows, то мне нужно запустить от имени администратора, чтобы получить доступ к ключу. Моя конечная цель - удалить ключ UserChoice
.
Я заметил, что Windows помещает правило Deny на ключ UserChoice
, которое не позволяет мне удалить этот ключ. Если мне удастся удалить это правило, я верю, что смогу удалить ключ UserChoice
. Вот код, который я пробовал:
public static void ShowSecurity(RegistryKey regKeyRoot, string user) {
RegistrySecurity security = regKeyRoot.GetAccessControl(AccessControlSections.All);
foreach (RegistryAccessRule ar in
security.GetAccessRules(true, true, typeof(NTAccount))) {
if (ar.IdentityReference.Value.Contains(User) &&
ar.AccessControlType.ToString().ToLower() == "deny") {
security.RemoveAccessRuleSpecific(ar);
regKeyRoot.SetAccessControl(security);
}
}
}
Когда Windows создает ключ UserChoice
, она добавляет правило безопасности для текущего пользователя типа Запретить; разрешение: специальное . Это правило не наследуется и применяется только к ключу UserChoice
.
После некоторого возни с администратором я могу получить к нему доступ RegistryAccessRule
. Однако даже работая от имени администратора, я не могу удалить это правило. Я где-то читал в своем исследовании, что нет никакого программного способа сделать это. Я могу удалить это правило через RegEdit. Я также могу удалить ключ UserChoice
с помощью диспетчера типов файлов из NirSoft. Поэтому я предполагаю, есть способ сделать это.
Резюме: Есть ли способ удалить правило запрета, чтобы можно было удалить ключ UserChoice
?