2010-12-01 4 views
0

Как бы найти другой путь exe, зная его имя в .net?C# как зарегистрироваться exe?

Могу ли я добавить имя к переменной окружения ОС? Будет ли другое приложение «регистрироваться» в другом месте?

Мне нужно приложение A для запуска приложения B и вызова некоторых служб WCF на нем.

Спасибо!

+1

Не можете ли вы поместить путь к B в настройке конфигурации для приложения A? – Amy 2010-12-01 01:36:14

+0

Это будет работать, было бы более чистое решение? и чище я имею в виду то, что не потребует изменений в приложении A, если изменяется местоположение приложения B. Спасибо за комментарий. – dnndeveloper 2010-12-01 01:44:53

+0

Ввод пути в настройке конфигурации не требует модификации приложения A при перемещении приложения B. Все, что вам нужно сделать, это изменить файл ApplicationA.exe.config. Никакой перекомпиляции не потребуется. – 2010-12-01 01:50:47

ответ

3

Чтобы ответить на ваш вопрос: вы не можете знать путь, просто зная имя. Exe может находиться где угодно в файловой системе. Там могут быть несколько экземпляров, которые не знают друг о друге. Несколько файлов EXE, которые полностью разные, могут иметь одно и то же имя.

Вы можете взять один из нескольких подходов, чтобы обойти это, в зависимости от еха вы ориентируетесь:

  • получить пользователь просматривать на ех, используя обычный файл просмотр диалогового
  • поиска файла система
  • увидеть, что следы целевой ехе уходит на системы (файловой системы, реестра, переменные окружения, и т.д.) и использовать эти следы, чтобы найти ехе

для либо о f эти параметры сохраняют результат, поэтому вам не придется выполнять его снова, когда ваше приложение будет запущено в следующий раз.

Поиск в файловой системе может занять некоторое время, вы не можете найти exe (в зависимости от уровня пользователя, на котором работает приложение), и вы можете получить ложные срабатывания, особенно если приложение называется чем-то немым, как setup .exe.

Получение пользователя для поиска exe при первом запуске, возможно, является самым надежным способом его обнаружения, но тогда вам нужно решить, что делать, если ваше приложение работает, но целевой exe больше не находится в указанном месте , или пользователь выбрал неверный exe.

Если у вас есть контроль над App B (т. Е. Это ваш продукт), вы можете подумать о добавлении некоторой информации в известное место в реестре, когда приложение B будет установлено, чтобы приложение A могло легко найти его. Вы все равно должны иметь план B, хотя в случае отсутствия информации.

0

Ссылка на путь к ярлыку exe в настройке конфигурации, таким образом, если exe когда-либо перемещается по ярлыку, все равно будет актуальным. Попробуйте, сделайте ярлык для exe, затем вырежьте и вставьте exe в другое место, затем дважды щелкните ярлык, и вы увидите, что он указывает на новое местоположение exe, поэтому для приложения A не потребуются изменения в приложении A, если приложение B меняется ,

0

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

UPDATE:

Еще одно предложение было бы создать жесткую ссылку EXE в AppB в:

mklink /H AppB-link.exe path_to_actual_exe 

Или символическую ссылку на весь каталог, в котором приложение B проживает:

mklink /D virtual_directory path_to_actual_directory 
Смежные вопросы