Как я могу найти путь выполнения установленного программного обеспечения в С#, например, медиаплеер, vlc-плеер. Мне просто нужно найти их путь выполнения. если у меня есть vlc-плеер, установленный на моем диске D. как найти путь к VLC.exe из моего кода С#
Этот метод работает для любого исполняемого файла, который находится в папке, которая определена в переменной 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, он находит только пути для некоторых исполняемых файлов
Используя код С#, вы можете найти путь для некоторых excutables следующим образом:
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.
Я использовал раздел реестра 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";
}
qaru.site/questions/266878/... описано, как получить приложение, связанное с определенным расширением файла.
Возможно, вы могли бы использовать эту технику, чтобы получить приложение, связанное с определенными расширениями, такими как avi или wmv - либо Medial Player, либо в вашем случае проигрыватель VLC?