2013-07-02 39 views
0

我有使用FileSystemWatcher並調用相關命令(例如批處理文件)的C#服務。其中一個批處理文件需要殺死正在運行的程序,複製一些文件並再次啓動程序。 Taskkill用於擺脫程序。運行taskkill.exe的C#windows服務

批處理文件被調用,但taskkill命令永遠不會殺死一個進程(例如用戶打開的notepad.exe)。同樣的批處理文件的工作原理,如果我只是運行它時,im作爲該用戶登錄。

我試圖運行該服務作爲登錄用戶帳戶(記事本打開的同一個帳戶)無濟於事 - 默認是本地系統。

我不能硬編碼的用戶名(但我認爲,模擬配置,但有點不願意存儲用戶的密碼)。

有什麼建議嗎?

+0

您可以調試以查看您正在獲取的內容嗎?它拋出一些錯誤/異常? – Microtechie

+0

不能說,作爲本地系統運行。我嘗試管道輸出如下所示:taskkill/IM notepad.exe> C:\ Users \ user \ Desktop \ testoutput.txt - 文件已創建,但它是空的。如果我通過雙擊批處理文件運行命令,將生成以下輸出: SUCCESS:將終止信號發送到PID XXXX的進程「notepad.exe」。 - 用於每個正在運行的記事本。 – zaitsman

+0

我不認爲批處理腳本中的失敗會引發異常。 –

回答

0

由於本地服務始終具有最高特權,因此嘗試使用taskkill/f強制終止它。但是,如果仍然失敗,請檢查錯誤代碼%errorlevel%

+0

是幾分鐘前想出來的 - 不得不/ F來使它工作 – zaitsman

0

也許,這值得刪除,也許不是。 本地系統能夠使用taskkill.exe上的/ F(強制)開關來終止進程。