繁体   English   中英

注册表使用C#以编程方式获取目录所有者

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM