2011-12-30 47 views
2

我想在不同的用戶下從我的java服務器運行CSharp進程。 我使用PSExec來做到這一點 - 它可以在我的電腦上正常工作,但是在「真實」服務器上進行時,該過程立即崩潰。 (看起來CSharp應用程序甚至沒有啓動 - 我試圖打印一些文件作爲第一個命令,但沒有寫入任何內容)。從Java運行PSExec不起作用

運行java進程的用戶和其他用戶都在Administrator組中。

我不知道爲什麼應用程序崩潰。

這是我的代碼:

ProcessBuilder processBuilder = new ProcessBuilder(
"c:\\pstools\\PsExec.exe", 
"-u", 
"username", 
"-p", 
"password", 
appPath, 
arg1, 
arg2); 

processBuilder.start(); 
+0

即使Java沒有涉及(如果您手動運行它),PSExec是否仍然可以在「真實」服務器上使用C#應用程序?如果是這樣,你可能需要發佈你的代碼和命令在這裏審查... – ziesemer 2011-12-30 15:46:16

+0

是的,它的工作原理。我使用ProcessBuilder來運行該命令。我相信代碼是好的 – 2011-12-30 16:08:15

+0

好吧,顯然有些東西是不正確的。請發佈您的代碼,然後我們將有一些工作要做。 – ziesemer 2011-12-30 17:36:43

回答

1

嘗試XCMD由佐爾坦·克賽茲馬迪亞: http://feldkir.ch/xcmd.htm

這個問題上的Sysinternals論壇上被討論,因爲我remeber存在與EOL符號一個問題,即PSEXEC使用。

你有XCMD

+0

我試過,但不明白我應該如何使用它。它要求輸入一個計算機名稱,我不明白我應該使用 – 2011-12-30 17:49:50

+0

幾乎與psexec相同的方式:xCmd.exe \\ computer/user:somebody/pwd:*/d:d:\ test1.exe其中「計算機「是遠程計算機的名稱。 – npocmaka 2011-12-30 19:33:23

+0

如果我使用同一臺電腦怎麼辦?我想在本地主機上運行。我每次都收到以下消息:系統找不到指定的文件。我的命令是:xCmd.exe \\ <計算機名稱> cmd – 2011-12-30 20:16:28

0

它工作得很好。請記住,您需要在您的ShellCommandString中加入\\ \ 我的同事剛剛來到我這個問題,我googoled它,一到這個網頁.. 的ProcessBuilder會工作得很好,確保stirng你已經是=的stirng您希望在cmd中

ProcessBuilder processBuilder = new ProcessBuilder(
    "Psexec \\\\\\\\10.192.246.76 -i -u Administrator -p admin2193 cmd /c C:\\\\CI\\\\AutoTest\\\\agent_test1.bat"); 

processBuilder.start(); 
相關問題