2013-05-29 2 views
0

У меня есть хорошее рабочее консольное приложение, которое открывает файл .txt и помещает его вывод, создавая еще один файл .txt.Запуск приложения (при нажатии кнопки), который открывает файл .txt и помещает вывод в другой .txt-файл

Однако, когда я пытаюсь использовать Process.Start мое приложение (при нажатии кнопки, через VB) он сработает. Я пробовал несколько десятков кодовых комбинаций и изолировал проблему:

Похоже, что если мое консольное приложение должно открыть или имеет какое-либо отношение к внешним файлам, оно сработает. Я могу легко использовать Process.Start в приложении, которое не использует внешние данные.

Как я могу решить эту проблему?

+0

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

+0

Действительно, я не думал об абсолютном пути. Форма отлично работает. – zygbie

ответ

0

Убедитесь, что внешнее приложение имеет права изменять файлы.

Вы можете добавить ProcessStartInfo к вашему Process перед Start:

ProcessStartInfo processInfo = new ProcessStartInfo(); 
    processInfo.Verb = "runas"; 
    processInfo.FileName = command; 
    processInfo.Arguments = parameters; 
    processInfo.UserName = "username"; 
    processInfo.Password = password; 
    processInfo.Domain = "myDomain"; 
    processInfo.UseShellExecute = false; 
    processInfo.LoadUserProfile = true; 

    Process.Start(processInfo); 

Это должно запустить процесс, как администратор и убедиться, что процесс имеет право вносить изменения в файлы.

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

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