2011-01-28 3 views
2

Мне нужно запустить стороннее приложение java из приложения C# .net. Первоначально я хотел сделать это с сайта asp.net, но после того, как я столкнулся с проблемами с разрешениями/привилегиями, я перешел на попытку сделать это из службы Windows, поскольку он работает как пользователь системы, который, как я надеялся, устранит мои проблемы. О да, и мои проблемы возникают при попытке запустить это на сервере Windows 2008. Все хорошо в моей среде разработки Windows 7.Проблемы с System.Diagnostics.Process.Start() в Windows Server 2008

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

У меня есть команда, которую я хочу запустить в пакетном файле, и я использую следующий код, чтобы запустить его.

ProcessStartInfo psi = new ProcessStartInfo(filePathToBatchFile); 
     psi.Arguments = "arguments for batch file..." 
     psi.UseShellExecute = false; 
     psi.RedirectStandardOutput = true; 
     psi.RedirectStandardError = true; 
     psi.RedirectStandardInput = true; 
     Process p = Process.Start(psi); 

Я запускаю пакетный файл по существу, потому что я хотел убедиться, что что-то происходит. Я убедился, что все переменные и пути к файлам верны и что пакетный файл действительно запущен. Я могу заставить его делать другие вещи, такие как файлы xcopy, и я могу запустить команду из командной строки, и она отлично работает. Никаких исключений не выбрасывают и не выводят из процесса. Если я изменил пути (к двоичным файлам java, файлам, которые я перехожу к нему и т. Д.) К сознательно неправильным, то он жалуется.

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

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

+0

Не могли бы вы предоставить выходные данные RedirectStandardOutput и RedirectStandardError, пожалуйста? Мы могли бы «развлекать» вас без ведома без каких-либо фактов о том, что произошло. Потому что это ненормально и все, что было предложено http://stackoverflow.com/questions/361097/c-service-cannot-execute-batch-file, должно привести к нормальному выполнению. – apros

+0

Нет данных из RedirectStandardOutput или RedirectStandardError. – rmsylvester

ответ

1

Вам необходимо создать манифест для вашего приложения или отключить UAC.

Что происходит, так как это не подписанный исполняемый файл, UAC препятствует запуску/запуску других приложений. Вот где проявляется манифест ... Посмотрите его в документации Windows SDK (Appliqueiton Manifest).

я столкнулся с вопросами, как это раньше, и Что больше всего раздражает то, что нет никаких ошибок: http://msdn.microsoft.com/en-us/library/bb756929.aspx и здесь: http://technet.microsoft.com/en-us/library/xc3tc5xx(VS.80).aspx (better description)

Учебник по манифестов: http://msdn.microsoft.com/en-us/library/bb756973.aspx (Very Good)

App разрешений и контроль учетных записей Windows (Vista , 7, 2008/R2) http://msdn.microsoft.com/en-us/library/bb756996.aspx

+0

Спасибо за ссылки! Ваша помощь очень ценится. Перед тем, как я начал их читать, я случайно решил проблему. Вместо того, чтобы начинать Java-приложение, я нашел скрипт Python, который сделал то же самое. действительно не понимаю, почему вызов исполняемого файла Python может изменить ситуацию. – rmsylvester

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