C# 获取我的计算机中特定应用程序的安装路径

C# 获取我的计算机中特定应用程序的安装路径,c#,path,installation,C#,Path,Installation,我试图在我的应用程序中使用C#获取winrar的安装路径(例如,如果有人将其安装在C:\users\admin\上),我发现了以下方法: 它适用于许多程序,但不适用于winrar。有人知道怎么做吗??谢谢 因为WinRAR的安装程序没有将卸载信息放在注册表的正常位置,所以该方法不起作用吗?您是否进行了注册表搜索,以查看该信息是否在注册表中的任何其他位置可以获取?您是否在64位windows上运行应用程序?该方法是否无效,因为WinRAR的安装程序没有将卸载信息放在注册表中的正常位置?您是否进行

我试图在我的应用程序中使用C#获取winrar的安装路径(例如,如果有人将其安装在C:\users\admin\上),我发现了以下方法:


它适用于许多程序,但不适用于winrar。有人知道怎么做吗??谢谢

因为WinRAR的安装程序没有将卸载信息放在注册表的正常位置,所以该方法不起作用吗?您是否进行了注册表搜索,以查看该信息是否在注册表中的任何其他位置可以获取?您是否在64位windows上运行应用程序?该方法是否无效,因为WinRAR的安装程序没有将卸载信息放在注册表中的正常位置?您是否进行了注册表搜索以查看该信息是否在注册表中的其他任何位置可以获取?您是否在64位windows上运行应用程序?
string GetPath(string extension)
{
    var appName = (string)Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(extension).GetValue(null);
    var openWith = (string)Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(appName + @"\shell\open\command").GetValue(null);
    var appPath =  System.Text.RegularExpressions.Regex.Match(openWith, "[a-zA-Z0-9:,\\\\\\. ]+").Value.Trim();
    return new FileInfo(appPath).Directory.FullName;
}
GetPath(".rar");