2011-11-08 3 views
3

В .NET существует ли эквивалент команды «где», которая присутствует на машинах Windows Vista и Windows 7? Мне нужно решить жесткий путь к исполняемому файлу, который определен в системном пути во время установки, и не все устанавливают все, используя путь установки по умолчанию..NET Эквивалент командной строки «где» команда

В настоящее время я вызываю команду «где» как внешний процесс, но это работает только на машинах Vista и Windows 7, это не работает на XP из коробки.

+1

Короткий ответ: нет. Вы называете этот другой исполняемый файл чем-то вроде «Process.Start»? Или вы хотите положить файлы/что-то в свою папку? – user7116

+0

Я вызываю исполняемый файл, используя Process.Start(). –

+1

Вы можете написать функцию using System.Environment.GetEnvironmentVariable, чтобы получить путь, а затем выполнить поиск по самому исполняемому файлу, который вы ищете. – Kibbee

ответ

0

Вы должны прочитать переменную окружения PATH и искать присутствие приложения в каждом из путей и использовать его. Вот как командлет Powershell get-command работает хорошо - http://technet.microsoft.com/en-us/library/dd347726.aspx

Примечание: Если причина для получения пути через which/where является использование пути и вызвать исполняемый файл, вам не нужно делать, так как исполняемый файл уже PATH, и вам нужно получить путь, а затем использовать его явно.

+0

Ну, вот что смешно: когда я использую «где», он находит это, но если я просто вызываю Process.Start(), используя только исполняемое имя, он его не находит. Это поведение, которое кажется только присутствующим на 64-битной Vista и Windows 7, 32-разрядные машины работают нормально. –

+0

Этот 32-битный код ошибочно полагал, что он был установлен в 'C: \ Program Files \'? – user7116

+0

@BasedAsFunk - Я не вижу ничего подобного. Прекрасно работает на 64-битной Windows 7. – manojlds

-1

Вы можете использовать() метод System.IO.Directory.EnumerateFiles для поиска файлов Вот пример

 System.IO.Directory.EnumerateFiles(Environment.SystemDirectory,"YourFile.exe",SearchOption.AllDirectories)

Он возвращает массив строку, содержащую путь (ы).

+0

«System.IO.Directory.Exists» принимает единственный параметр как входной путь, который является контуром каталога и возвращает true/false. Откуда вы получили это определение метода Exists? –

Смежные вопросы