在Registry中查找应用程序路径

时间:2012-05-05 07:55:55

标签: c# .net

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

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

谢谢!

2 个答案:

答案 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'或“”。