2016-11-25 12 views
0

У меня есть 2 exe, A.exe и B.exe. A.exe добавляется в ключ запуска реестра, чтобы он начинался с запуска Windows. Внутри А ГЛАВНОЕ, есть этот код:Программа вылетает при запуске процесса. Начало() при запуске Windows

Process pr = new Process(); 
pr.StartInfo.FileName = "B.exe"; 
pr.StartInfo.Arguments = SomeArgs; 
pr.Start(); 

А и B находится в том же каталоге. Если я запустил A вручную, дважды щелкнув по нему, он отлично работает, B запускается нормально. Но когда я попытался перезапустить окна, чтобы проверить, хорошо ли это работает при запуске Windows, каждый раз, когда A.exe разбился и, следовательно, Bexe никогда не запускался. Я думал, что это была какая-то другая проблема в A, может быть, система была медленной, чтобы загружать некоторые зависимости, но нет, когда я удалял вышеуказанную часть кода, все отлично работает при запуске Windows, а не сбой, но B не запускается. Так что может быть проблемой или как решить это?

Edit:

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

System.ComponentModel.Win32Exception: Система не может найти файл указанный в System.Diagonstics.Process.StartWithShellExecuteEx (ProcessSt artInfo startInfo) в System.Diagonostics.Process.Start() в System.Diagonostics.Process.Start (ProcessStartInfo startInfo) в System.Diagnostics.Process.Start (String fileName, Строковые аргументы) в ....

Я даже попытался с полным пути к файлу по-прежнему той же ошибкой. Но при запуске вручную это не вызывает ошибок и работает отлично. Его просто, что запуск этих окон испортил это.

ответ

0

попробовать, что один

Process pr = new Process(); 
pr.StartInfo.FileName = Application.StartupPath+"/B.exe"; 
pr.StartInfo.Arguments = SomeArgs; 
pr.Start(); 
+0

пытался что тоже не повезло. –

0

Я считаю, что вы можете быть запущен в ошибки безопасности. Процесс требует определенных разрешений на работу. Смотрите раздел Security отмечает здесь:

Process Class

Выяснить способ для входа вопрос и посмотреть, если это проблема, вы работаете в.

+0

использовал попытку catch, и это пришло, я понятия не имею, почему это произошло: System.ComponentModel.Win32Exception: система не может найти файл, указанный в System.Diagonstics.Process.StartWithShellExecuteEx (ProcessStartInfo startInfo) в System.Diagonostics .Process.Start() в System.Diagonostics.Process.Start (ProcessStartInfo startInfo) в System.Diagnostics.Process.Start (String fileName, String arguments) по адресу .... –

+0

Я даже попытался с полным пути к файлу по-прежнему той же ошибкой. Но при запуске вручную это не вызывает ошибок и работает отлично. –

+0

Это по существу означает, что путь к исполняемому файлу неверен. Я знаю, что ты упомянул, что попробовал полный путь. Есть ли в вашем пути пробелы? – JuanR

0

Попробуйте указать WorkingDirectory:

Process pr = new Process(); 
pr.StartInfo.WorkingDirectory = @"C:\path\to"; 
pr.StartInfo.FileName = "B.exe"; 
pr.StartInfo.Arguments = SomeArgs; 
pr.Start();