gpt4 book ai didi

c# - .Net 注册表安全权限 - 具有权限的用户无法访问注册表

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:04 26 4
gpt4 key购买 nike

对于我的 .net 应用程序,我有一种在本地计算机上创建特殊用户的机制。然后我创建注册表/目录条目,并为这个新创建的用户分配对适当的子键/文件夹的完全访问权限。

对于我的测试,我使用模拟来设置环境以在这个新用户下运行,然后在注册表/目录部分运行一些操作。

我使用以下代码创建我的注册表部分(以管理员身份运行):

        RegistryAccessRule rule = new RegistryAccessRule(LOGON_USER_NAME, RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow); 
RegistrySecurity security = new RegistrySecurity();
security.AddAccessRule(rule);

//Create Test Sub Key in Registry with permissions for the MicaUser
root = Registry.LocalMachine.CreateSubKey(SUB_KEY_ROOT, RegistryKeyPermissionCheck.ReadWriteSubTree);
root.SetAccessControl(security);

RegistryKey key = root.CreateSubKey(SUB_KEY_DELETE, RegistryKeyPermissionCheck.ReadWriteSubTree);

root.Close();
key.Close();

然后,当我尝试在模拟用户下操作寄存器时:

RegistryKey root = Registry.LocalMachine.OpenSubKey(SUB_KEY_ROOT);root.DeleteSubKeyTree(SUB_KEY_DELETE);

这会导致权限异常“无法写入注册表项”。

目录操作正常,并按预期工作,但注册表权限失败。我检查了注册表,用户已被授予对子项的完全权限。

错误:“无法写入注册表项”

注意:注册表操作在 Admin 用户下工作正常,因此代码是正确的。

有什么想法吗?

问候

三聚体

最佳答案

更新:

我已经弄清楚访问各种子项目(目录和注册表)时出现的问题。看起来 ACL 仅应用于子项而不应用于根项。下面的问题是关于如何解决这个问题的问题:

C# - Windows ACL - Applying Inherited Permissions

关于c# - .Net 注册表安全权限 - 具有权限的用户无法访问注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com