как найти путь выполнения установленного программного обеспечения - PullRequest
4 голосов
/ 26 мая 2009

Как я могу найти путь выполнения установленного программного обеспечения в C #, например, медиаплеер, VLC Player. Мне просто нужно найти путь их выполнения. если у меня установлен DVD-плеер на моем диске D. Как мне найти путь VLC.exe из моего c # кодирования

Ответы [ 5 ]

10 голосов
/ 26 мая 2009

Используя код 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");

Однако вполне может оказаться, что в приложении, которое вы хотите, нет ключа пути к приложению.

5 голосов
/ 26 мая 2009

Этот метод работает для любого исполняемого файла, расположенного в папке, определенной в переменной PATH Windows:

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");

Как и метод Фредрика, он находит пути только для некоторых исполняемых файлов

1 голос
/ 27 октября 2017

Я использовал раздел реестра 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";          
    }
0 голосов
/ 26 мая 2009

В этой статье stackoverflow.com описывается, как получить приложение, связанное с конкретным расширением файла.

Возможно, вы могли бы использовать эту технику, чтобы связать приложение с определенными расширениями, такими как avi или wmv - либо Medial Player, либо в вашем случае VLC player?

0 голосов
/ 26 мая 2009

Посмотрите на MsiEnumProductsEx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...