2015-10-12 25 views
0

我一直在尋找一種方法來查找與寡婦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類型......有誰知道如何解決這個問題?

+1

*不*忽略InvokeMethod()的返回值。現在你不知道什麼時候該方法失敗,例如拒絕訪問錯誤。這是一種常見的不幸事件,運行此代碼的用戶帳戶的權限非常重要。 –

回答

-1

對不起,只是重新閱讀你的問題,並意識到你是在一個特定的過程的用戶,而不是你正在建造的應用程序的用戶,所以下面是不是真的適用。

如果對某人有用,我會將它留在這裏。

嘗試My.User.Name相當肯定,這將做你想做的事,我沒有能力檢查我在哪裏,但已經使用它,早在3.5我相信。

+0

是的,它不一定會成爲當前用戶......謝謝 – mattisrowe

相關問題