[英]Registry get directory owner programmatically using C#
我想以编程方式使用C#阅读Windows注册表的目录(及其子目录)的所有者。
例如,假设我的注册表包含目录HKEY_CURRENT_USER\\Software\\Microsoft
这是由用户拥有SYSTEM
。 我打算如何使用它的代码示例(省略dir
子目录的递归)将是:
string dir = @"HKEY_CURRENT_USER\Software\Microsoft";
string owner = ReadRegOwner(dir); // owner is "SYSTEM"
但是,我不确定如何在C#中实现ReadRegOwner
。 我已经找到了RegistrySecurity类,但我不知道如何使用它来获取注册表目录的所有者。 它具有GetOwner
成员函数,但是该函数需要类型为Type
的参数,我不确定该向那里传递什么。
有人知道如何实现吗?
因此,实现可能如下所示:
string ReadRegOwner(string dir)
{
RegistryKey key = Registry.CurrentUser.OpenSubKey(dir, false);
RegistrySecurity rs = key.GetAccessControl();
IdentityReference owner = rs.GetOwner(typeof(System.Security.Principal.NTAccount));
return owner.ToString();
}
例:
string dir = @"Software\Microsoft";
string owner = ReadRegOwner(dir); // Looks in HKEY_CURRENT_USER
当然,如果需要与HKEY_CURRENT_USER
不同的基本密钥,也可以替换CurrentUser
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.