我使用的是多用戶Windows Server,而rdpclip的bug每天都會讓我們大吃一驚。我們通常只需打開任務管理器並殺死然後重新啓動rdpclip,但這是一個令人頭疼的問題。我寫了一個powershell腳本來殺死然後重新啓動rdpclip,但是沒有人使用它,因爲它是一個腳本(更不用說執行策略限制了這個框)。我試圖寫一個快速和髒的Windows應用程序,你點擊一個按鈕來殺死rdpclip並重新啓動它。但是我想限制它到當前用戶,並且找不到Process類的方法。到目前爲止,這裏是我有:如何在.NET(C#)中爲特定用戶終止進程?
Process[] processlist = Process.GetProcesses();
foreach(Process theprocess in processlist)
{
if (theprocess.ProcessName == "rdpclip")
{
theprocess.Kill();
Process.Start("rdpclip");
}
}
我不確定,但我認爲這將殺死所有rdpclip進程。我想通過用戶選擇,比如我的PowerShell腳本的作用:
taskkill /fi "username eq $env:username" /im rdpclip.exe
& rdpclip.ex
我想我可能只是從我的可執行文件調用PowerShell腳本,但似乎相當缺憾。
對任何格式問題提前道歉,這是我第一次來這裏。
更新:我還需要知道如何獲取當前用戶並只選擇那些進程。下面提出的WMI解決方案並不能幫助我解決這個問題。
更新2:好吧,我已經想出瞭如何獲取當前用戶,但它不匹配遠程桌面上的進程用戶。任何人都知道如何獲取用戶名而不是SID?
乾杯, fr0man
看起來不錯,除非我無法使用VS來識別ObjectQuery,即使使用System.Management也是如此。這是我完全不熟悉的一個領域。 – fr0man 2009-01-09 00:32:17
啊,沒關係。這僅在.NET 2.0及以下版本中受支持。現在修復。 – fr0man 2009-01-09 00:35:14