Im试图在此注册表项中获取已安装的应用程序。
HKEY_USERS \ S-1-5-21-xxxxxx-xxxxxx-xxxxxx-1000 \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall
如果您用文件夹名称替换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\Windows\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";
}
}
}
最佳答案
如果要使用USER配置文件的列表来遍历HKEY_USERS注册表配置单元上的注册表,则可以阅读并过滤其中的内容
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
但是,您需要具有打开与当前用户不同的用户的注册表配置单元的权限(我认为管理员从未这样做)。
如果您只需要检查CURRENT_USER注册表,则直接使用密钥更容易
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall