4

我需要计算机上已安装应用程序的列表及其路径目录,我发现:

     //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")了,但它不起作用。

谢谢!

4

2 回答 2

3

每个软件都有不同的 InstallLocation 名称,如果它存在的话。

将永远是的一件事是UninstallString,它返回卸载程序 (exe) 的路径,您可以从中删除目录。

但是,您应该知道,如果您使用 HKEY_CURRENT_USER,您不会在那里获得所有已安装的程序。

您应该通过 HKEY_LOCAL_MACHINE。

因此,您正在寻找的代码是:

string uninstallExePath = sk.GetValue("UninstallString");
DirectoryInfo directory = new FileInfo(uninstallExePath).Directory;

string directoryPath = directory.FullName;
于 2012-05-05T08:06:28.733 回答
1

为了获得路径,我发现:GetValue("InstallLocation")

这是可行的,但是对于这么多的价值,它会得到“空”或“”。

于 2012-05-05T23:22:03.487 回答