我正在处理文件关联问题。我已经确定在以下位置有一个名为UserChoice
的键:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[ext].
我已经能够读取和写入
UserChoice
键,但前提是我必须先创建它,并且它还没有被Windows创建。但是,如果UserChoice
键已经被Windows创建,那么我需要以管理员身份运行才能访问该键。我的最终目标是删除UserChoice
键。我注意到Windows在
UserChoice
键上设置了一个拒绝(Deny)规则,这阻止了我删除该键。如果我能成功移除该规则,我相信我就能删除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
键时,它为当前用户添加了一个类型为 Deny;权限:Special 的安全规则。此规则不会被继承,仅适用于 UserChoice
键。通过一些操作并以管理员身份运行,我能够访问该
RegistryAccessRule
。但是即使以管理员身份运行,我也无法删除此规则。在我的研究中,我曾经读到过没有程序化的方法可以做到这一点。我可以通过 RegEdit 删除此规则。我还可以使用 NirSoft 的文件类型管理器删除 UserChoice
键。因此我认为应该有某种方法可以做到这一点。总结: 是否有办法删除拒绝规则,以便我可以删除
UserChoice
键?