如何在c#中找到已安装软件的执行路径,例如媒体播放器,vlc播放器。我只需要找到他们的执行路径。如果我的D驱动器中安装了vlc播放器。如何从我的c#编码
中找到VLC.exe的路径答案 0 :(得分:10)
使用C#代码,您可以通过以下方式找到某些可删除的路径:
private const string keyBase = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths";
private string GetPathForExe(string fileName)
{
RegistryKey localMachine = Registry.LocalMachine;
RegistryKey fileKey = localMachine.OpenSubKey(string.Format(@"{0}\{1}", keyBase, fileName));
object result = null;
if (fileKey != null)
{
result = fileKey.GetValue(string.Empty);
fileKey.Close();
}
return (string)result;
}
像这样使用它:
string pathToExe = GetPathForExe("wmplayer.exe");
但是,很可能您想要的应用程序没有App Paths密钥。
答案 1 :(得分:5)
此方法适用于位于windows PATH变量中定义的文件夹中的任何可执行文件:
private string LocateEXE(String filename)
{
String path = Environment.GetEnvironmentVariable("path");
String[] folders = path.Split(';');
foreach (String folder in folders)
{
if (File.Exists(folder + filename))
{
return folder + filename;
}
else if (File.Exists(folder + "\\" + filename))
{
return folder + "\\" + filename;
}
}
return String.Empty;
}
然后按如下方式使用:
string pathToExe = LocateEXE("example.exe");
与Fredrik的方法一样,它只查找某些可执行文件的路径
答案 2 :(得分:1)
我使用了CurrentVersion \ Installer \ Folders注册表项。只需传入产品名称即可。
private string GetAppPath(string productName)
{
const string foldersPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\Folders";
var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
var subKey = baseKey.OpenSubKey(foldersPath);
if (subKey == null)
{
baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
subKey = baseKey.OpenSubKey(foldersPath);
}
return subKey != null ? subKey.GetValueNames().FirstOrDefault(kv => kv.Contains(productName)) : "ERROR";
}
答案 3 :(得分:0)
答案 4 :(得分:0)
This stackoverflow.com article描述了如何使应用程序与特定文件扩展名相关联。
也许您可以使用此技术来获取与某些扩展相关联的应用程序,例如avi或wmv - Medial Player或您的VLC播放器吗?
答案 5 :(得分:0)
没有一个答案对我有用。经过数小时的在线搜索,我能够成功获取安装路径。这是最终代码。
public static string checkInstalled(string findByName)
{
string displayName;
string InstallPath;
string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
//64 bits computer
RegistryKey key64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey key = key64.OpenSubKey(registryKey);
if (key != null)
{
foreach (RegistryKey subkey in key.GetSubKeyNames().Select(keyName => key.OpenSubKey(keyName)))
{
displayName = subkey.GetValue("DisplayName") as string;
if (displayName != null && displayName.Contains(findByName))
{
InstallPath = subkey.GetValue("InstallLocation").ToString();
return InstallPath; //or displayName
}
}
key.Close();
}
return null;
}
您可以像这样调用此方法
string JavaPath = Software.checkInstalled("Java(TM) SE Development Kit");
和繁荣。干杯