2011-01-28 82 views
2

我需要從c#.net應用程序啓動第三方Java應用程序。最初我想從一個asp.net網站做到這一點,但遇到權限/特權問題後,我試圖從一個Windows服務做到這一點,因爲它作爲系統用戶運行,我希望這可以消除我的問題。哦,是的,當我試圖在Windows 2008服務器上運行時遇到問題。在我的Windows 7開發環境中一切都很好。Windows Server 2008上的System.Diagnostics.Process.Start()問題

當然,我已經搜索這些論壇和其他人的答案,沒有發現我已經找到了幫助,所以請招待我。

我有我想要在批處理文件中運行的命令,並使用下面的代碼來啓動它。

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 2011-01-28 16:53:56

+0

沒有從RedirectStandardOutput或RedirectStandardError輸出。 – rmsylvester 2011-01-31 14:44:44

回答

1

您必須爲您的應用程序創建清單或關閉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 (better description)

教程上體現: http://msdn.microsoft.com/en-us/library/bb756973.aspx (Very Good)

Windows應用程序的權限和UAC(Vista的,7,2008/R2) http://msdn.microsoft.com/en-us/library/bb756996.aspx

相關問題