如何在C#中获取HKEY_USERS的子文件夹名称?

3

我试图获取此注册表项中安装的应用程序。

HKEY_USERS\S-1-5-21-xxxxxx-xxxxxx-xxxxxx-1000\SOFTWARE\Microsoft\Win‌​dows\CurrentVersion\Uninstall

下面的代码可以工作,如果您将registry_Key的第一部分(x所在的位置)替换为您的文件夹名称。但是如何获得该文件夹名称,以便我可以在任何计算机上使用此代码,因为每台计算机上的该文件夹名称都不同?

换句话说,我该如何获取字符串的这一部分S-1-5-21-xxxxxx-xxxxxx-xxxxxx-1000呢?

     registry_key = @"> HKEY_USERS\S-1-5-21-xxxxxx-xxxxxx-xxxxxx-1000\SOFTWARE\Microsoft\Win‌​dows\CurrentVersion\Uninstall";
            using (Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
            {
                foreach (string subkey_name in key.GetSubKeyNames())
                {
                    using (RegistryKey subkey = key.OpenSubKey(subkey_name))
                    {
                        textBox2.Text += subkey.GetValue("DisplayName") + "\r\n";
                    }
                }
            }

1
为什么你不使用HKEY_CURRENT_USER呢? - Steve
不知道为什么我没想到那个...谢谢。 但是假设我真的想以这种方式访问它,你会如何做(因为我在网上找不到任何展示如何做的地方)? - Ruan
1个回答

2

如果您想获取可用于遍历HKEY_USERS注册表中的用户配置文件列表,可以读取并过滤以下内容:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

然而,如果你需要打开不同于当前用户的注册表项(我想管理员可以),你需要拥有相应的权限。
如果你只想检查当前用户的注册表,直接使用以下键更简单:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Win‌​dows\CurrentVersion\Uninstall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接