Как узнать путь к программе например calc.exe?

260
21 мая 2017, 20:14

Например в cmd можно запустить написав calc.exe

Реальный же его путь

c:\Windows\System32\calc.exe

Как в c# узнать путь calc.exe?

Answer 1

Запуск программы по названию его *.exe осуществляется благодаря переменным среды, где указаны директории для поиска исполняемых файлов.

Соотвественно, все что тебе надо- это пройти по переменным среды через Environment.GetEnvironmentVariable, а затем по директориям с файлами.

Но не все программы туда прописываются.

Есть варианты с реестром:

string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
    foreach(string subkey_name in key.GetSubKeyNames())
    {
        using(RegistryKey subkey = key.OpenSubKey(subkey_name))
        {
            Console.WriteLine(subkey.GetValue("DisplayName"));
        }
    }
}

и с WMI:

ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
foreach(ManagementObject mo in mos.Get())
{
    Console.WriteLine(mo["Name"]);
}

Однако, если программа не устанавливалась, а просто запускался какой-то EXE файл, то ты вряд ли найдешь где-нибудь запись о ней=> придется искать полным перебором всех дисков и директорий.

READ ALSO
C# (Windows Forms) — Где можно использовать “NewsFeed”(VK API)?

C# (Windows Forms) — Где можно использовать “NewsFeed”(VK API)?

Недавно начал знакомится с VK API, пишу программу на C# (Windows Forms)Понадобилось использование метода "NewsFeed"

244
Не рисует диагональную линию в ZedGraph

Не рисует диагональную линию в ZedGraph

Всё остальное программа считает правильно но возникла проблема с выводом графикаА именно ZedGRaphControl не хочет его рисовать

269
Получение данных с WebControl

Получение данных с WebControl

Подскажите как при использовании Awesomium при клике на WebControl получить информацию о соответствующем HTML тэге? Например: при клике на текст получить...

262