2010-07-19 108 views
0

我試圖通過使用pskill遠程終止一個進程。運行pskill.exe「訪問被拒絕」

從命令行,pskill工程很好,但當在C#中嘗試相同的命令我得到一個訪問被拒絕的錯誤。

var startInfo = new ProcessStartInfo { 
              FileName = "pskill.exe", 
              Arguments = "-t \\" + _currentMachine + 
                 " -u BobSmith -p Pass123 " + _currentService + 
                 " /acceptEULA" 
             }; 

    try { 
     using (Process exeProcess = Process.Start(startInfo)) { 
      exeProcess.WaitForExit(); 
     } 
    } catch { 
     Console.WriteLine("Cannot forcibly kill process."); 
    } 

我甚至嘗試創建其手動精細運行.bat文件,但試圖調用從C#中的.bat時,我得到了同樣的錯誤。

在試圖訪問win 2003服務器的XP機器上進行操作。

+0

「BobSmith」帳戶是否有足夠的權限來終止進程? – Oded 2010-07-19 18:48:49

+0

是的,如果我手動運行.bat文件,進程將被終止。 – Coward 2010-07-19 18:54:40

回答

0

我會仔細檢查您的憑據。不是那個,就是你的過程被「鎖定」了。

+0

假設你是對的,你會知道爲什麼手動運行.bat文件會殺死進程,但是如果我從C#代碼中啓動該文件,則不會。 – Coward 2010-07-19 18:56:21

+0

再看一遍,你如何獲得你的_CurrentService。你是否嘗試過使用PID? – drpcken 2010-07-19 19:05:30

+0

還沒有,但這是一個很好的建議,我不得不嘗試下一步。 – Coward 2010-07-19 19:10:37

0

默認情況下,字符串中的C#字符被轉義。您分配給參數的字符串包含兩個轉義字符。我懷疑他們變成了一個單一的斜槓。在字符串定義前添加一個@來解決這個問題。

Arguments = @"-t \\" + _currentMachine + 

在任何情況下,我建議將代碼添加到整個命令行寫出到一個文本文件,並檢查它,你需要它。如果文本文件有蝙蝠擴展名,可以成功運行它嗎?

1

對於下一個傢伙...

pskill.exe需要在Win2000兼容模式下運行。