В проекте, над которым я сейчас работаю, я запускаю внешний процесс. Однако внешний процесс представляет собой EXE-файл сложной программы, которая загружает информацию о текущем пользователе из пользовательской папки. Ярлык на рабочем столе для программы решает проблему, устанавливая параметр «Target:» равным X:\exepath\prgm.exe
и устанавливая параметр «Start In» для пути пользователя, X:\exepath\users\username
.
Я сейчас запускаю процесс так:
Process p = new Process();
p.StartInfo = new ProcessStartInfo( "X:\exepath\prgm.exe" );
p.StartInfo.WorkingDirectory = "X:\exepath\users\username";
p.Start();
while (!p.HasExited) { }
Однако, когда процесс запускается, запускаемая им программа в конечном итоге ищет все ресурсы в WorkingDirectory
вместо того, чтобы извлекать пользовательский контент из этой папки и весь другой контент из каталога, в котором находится EXE. Это предполагает, что Working Directory
и системный ярлык «Start In:» ведут себя по-разному.
Есть ли способ имитировать такое поведение с помощью процесса C #? В качестве альтернативы, можно ли создать ярлык в C #, который я мог бы затем начать с моего вызова процесса?
Пожалуйста, дайте мне знать, будет ли полезна дополнительная информация.
РЕДАКТИРОВАТЬ -
После еще нескольких проб и ошибок я решил использовать WSH, чтобы создать ярлык и запустить его. WSH использует имя WorkingDirectory для значения параметра «Start In:». Это ведет себя идентично под капотом как выполнение процесса в моем коде выше. Я все еще получаю сообщение об ошибке.