我需要在计算机上安装的应用程序列表及其路径目录,我发现:
//Registry path which has information of all the softwares installed on machine
string uninstallKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(uninstallKey))
{
foreach (string skName in rk.GetSubKeyNames())
{
using (RegistryKey sk = rk.OpenSubKey(skName))
{
// we have many attributes other than these which are useful.
Console.WriteLine(sk.GetValue("DisplayName") +
" " + sk.GetValue("DisplayVersion"));
}
}
}
我如何获得这条路?我试过了sk.GetValue("DisplayPath")
,但它不起作用。
谢谢!
答案 0 :(得分:2)
每个软件都有一个不同的InstallLocation名称,如果它会在那里。
永远的一件事是UninstallString
,它返回卸载程序(exe)的路径,你可以从中删除目录。
但是,如果你去HKEY_CURRENT_USER,你应该知道你不会在那里安装所有已安装的程序。
你应该通过HKEY_LOCAL_MACHINE。
所以,您正在寻找的代码是:
string uninstallExePath = sk.GetValue("UninstallString");
DirectoryInfo directory = new FileInfo(uninstallExePath).Directory;
string directoryPath = directory.FullName;
答案 1 :(得分:1)
为了获得我发现的路径:GetValue("InstallLocation")
这是有效的,但是对于这么多的价值,它会得到'null'或“”。