我一直在尋找一種方法來查找與寡婦7和以上的指定進程相關聯的用戶名(如果您在進程選項卡中打開任務管理器我想提供圖像名稱來取回用戶名)。這不一定是當前用戶。如何獲取與進程相關聯的Windows用戶名(在Framework 4.0中)
通過我在網上搜索,我發現了以下解決方案突然出現了幾次,它幾乎正是我想要的:
Public Shared Sub Main()
Dim selectQuery As SelectQuery = New SelectQuery("Win32_Process")
Dim searcher As ManagementObjectSearcher = New
ManagementObjectSearcher(selectQuery)
For Each proc As ManagementObject In searcher.Get
Console.WriteLine(proc("Name").ToString)
Dim s(1) As String
proc.InvokeMethod("GetOwner", CType(s, Object()))
Console.WriteLine(("User: " & (s(1) + ("\\" + s(0)))))
Next
Console.ReadLine()
End Sub
我唯一的問題是,這個代碼僅適用於框架4.5和向上。我目前正在開發的應用程序只有4.0(不幸的是我的選擇)。
有沒有人有這個問題的框架4.0解決方案?
感謝
編輯:OK,所以原來我一直有點白癡的,在上述方法中使用一切都在.NET 4.0支持(我忘了你必須使用降在MSDN上查看舊的支持版本)....我已經添加了system.management導入到我的類,但它似乎並沒有認識到SelectQuery和ManagementObjectSearcher類型......有誰知道如何解決這個問題?
*不*忽略InvokeMethod()的返回值。現在你不知道什麼時候該方法失敗,例如拒絕訪問錯誤。這是一種常見的不幸事件,運行此代碼的用戶帳戶的權限非常重要。 –