Проблемы System.Diagnostics.Process.Start () в Windows Server 2008 - PullRequest
2 голосов
/ 28 января 2011

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

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

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

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, файлы, которые я передаю ему и т. Д.) На заведомо неправильные, то он будет жаловаться.

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

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

1 Ответ

1 голос
/ 04 февраля 2011

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

Происходит следующее: поскольку UAC не является подписанным исполняемым файлом, UAC не позволяет вашей службе запускать / запускать другие приложения. Вот где появляется манифест .... Посмотрите его в документации Windows SDK (Applicaiton Manifest).

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

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

Разрешения приложений Windows и UAC (Vista, 7, 2008 / R2) http://msdn.microsoft.com/en-us/library/bb756996.aspx

...