2

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

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";
                    }
                }
            }
4

1 回答 1

2

如果您想要一个可用的 USER 配置文件列表来遍历 HKEY_USERS 注册表配置单元上的注册表,您可以读取并过滤

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

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

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Win‌​dows\CurrentVersion\Uninstall
于 2013-02-05T10:46:20.367 回答