2010-05-07 115 views
7

我試圖從.NET Windows服務啓動控制檯應用程序。該服務正在Windows 2008服務器上運行。從.NET窗口服務啓動進程

我使用Process.Start來運行控制檯應用程序,它運行(我可以在任務管理器中看到它),但我從來沒有得到進程標識,並且對Process.Start的調用只是掛起。 如果我從Windows 7機器運行相同的服務,則進程運行,並且我得到進程標識沒有問題。

我很困惑..

+4

您是否將UseShellExecute設置爲false?你重定向它的輸出嗎? – 2010-05-07 17:07:13

回答

1

難道你是產卵的過程中試圖提示用戶輸入的窗口站?在這種情況下,它可以掛...

這過程中,你開始?它是平臺/操作系統的一部分(如cmd.exe)還是自定義的?

+0

這是一個自定義進程,開始監聽特定的TCP端口。它確實監聽,但我無法將進程標識返回到啓動它的Windows服務。 – 2010-05-07 16:43:51

5

我正是這個同樣的問題。對我來說關鍵是設置StartInfo.UseShellExecute = false;

0

了一個解決方案很長一段時間的搜索之後,我發現我的問題的明智的石頭。

我做了一個新的基於WindowsForm程序,同的Process.Start命令,然後在標準的「Windows安全警報」對話框中顯示出來,而這就是爲什麼它dosent工作。

關閉「用戶訪問控制」後,Windows服務工作正常。