2010-07-15 29 views

回答

2

大家好我得到了我的問題解決方案。我使用WMI來獲取用戶名。

try { 
    object[] objArr = new object[2]; 
    ManagementScope ms = new ManagementScope("Path"); 
    ms.Connect(); 
    if (ms.IsConnected) 
    { 
     ObjectQuery Query = new ObjectQuery("SELECT * FROM Win32_Process WHERE Name='explorer.exe'"); 
     ManagementObjectSearcher searcher = new ManagementObjectSearcher(ms, Query); 
     foreach(ManagementObject objQuery in searcher.Get()) 
     { 
      objQuery.InvokeMethod("GetOwner", objArr); // objArr[0] contains the userId and objArr[1] contains Domainname 
      userName = Convert.ToString(objArr[0]); 
     } 
    } 
} 
catch (System.Exception ex) 
{ 
    throw ex; 
} 

感謝

0

據我瞭解,你想遠程確定的人的用戶名登錄到多臺PC和Windows窗體應用呈現結果。

Windows沒有枚舉此信息的內置機制。

無論您最終選擇使用哪種機制,您可能都需要在正在掃描的PC上具有管理權限的用戶帳戶下運行掃描應用程序。

您可能會選擇模擬SysInternals命令PsLoggedOn的行爲,該命令檢查遠程計算機上的HKEY_USERS項。要找出誰連接到PC(即訪問共享),請使用NetSessionEnum API。

有關PsLoggedOn的更多信息可以在這裏找到:link text

+0

是的,我想第二個「你想遠程確定登錄到許多PC的用戶的用戶名並將結果呈現在Windows窗體應用程序中嗎?」 – Sarathy 2010-07-17 17:32:41

16
//How about this: 
string strUserName = WindowsIdentity.GetCurrent().Name; 

那麼你可以做任何你想要與 「strUserName中」 變量做。請注意,如果有域名存在,它也包含域名。

相關問題