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

时间:2013-02-05 10:21:32

标签: c# directory registry

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

  

HKEY_USERS \ S-1-5-21-XXXXXX-XXXXXX-XXXXXX-1000 \ SOFTWARE \微软\ WIN DOWS \ CURRENTVERSION \卸载

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

换句话说,我将如何获得字符串的这一部分 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 个答案:

答案 0 :(得分:2)

如果您希望可用的USER配置文件列表遍历HKEY_USERS注册表配置单元上的注册表,您可以阅读并过滤

的内容。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

但是,您需要具有打开与当前用户不同的用户的注册表配置单元的权限(管理员我认为,从未完成)。
如果您只需要检查CURRENT_USER注册表,则直接使用密钥

会更容易
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Win‌​dows\CurrentVersion\Uninstall
相关问题