我正在研究文件关联。我已经确定有一个键被调用UserChoice
:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\[ext].
UserChoice
只要我创建它并且它尚未由 Windows 创建,我就能够读取和写入密钥。但是,如果 Windows 已经创建了密钥UserChoice
,那么我需要以管理员身份运行才能访问密钥。我的最终目标是删除密钥。UserChoice
我注意到 Windows 在密钥上设置了拒绝规则,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 创建密钥时,它会为 Type DenyUserChoice
的当前用户添加一个安全规则;许可:特殊。此规则不会被继承,仅适用于UserChoice
键。
随着一些混乱和以管理员身份运行,我可以访问它RegistryAccessRule
。但是,即使以管理员身份运行,我也无法删除此规则。我在研究中的某处读到,没有一种程序化的方法可以做到这一点。我可以通过 RegEdit 删除此规则。我还可以UserChoice
使用 NirSoft 的文件类型管理器删除密钥。所以我认为有一些方法可以做到这一点。
摘要:有没有办法可以删除拒绝规则以便我可以删除UserChoice
密钥?