2010-07-15 36 views

Trả lời

2

Hi All Tôi có giải pháp cho câu hỏi của tôi. Tôi đã sử dụng WMI để lấy userName.

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; 
} 

Cảm ơn

0

Theo tôi được biết, bạn muốn xác định từ xa tên người dùng của người đăng nhập vào nhiều máy tính và trình bày các kết quả trong một ứng dụng Windows Forms.

Windows không có cơ chế tích hợp để liệt kê thông tin này.

Cơ chế nào cuối cùng bạn chọn để sử dụng, có thể bạn sẽ cần chạy ứng dụng quét trong tài khoản người dùng có quyền quản trị trên PC đang được quét.

Bạn có thể chọn mô phỏng hành vi của lệnh SysInternals PsLoggedOn kiểm tra khóa HKEY_USERS trên máy tính từ xa. Để tìm hiểu xem ai được kết nối với PC (tức là truy cập vào phần chia sẻ), hãy sử dụng API NetSessionEnum.

Thông tin thêm về PsLoggedOn có thể được tìm thấy ở đây: link text

+0

vâng tôi muốn phần thứ hai "Bạn có muốn xác định từ xa tên người dùng của những người đã đăng nhập vào nhiều máy tính và trình bày kết quả trong ứng dụng Windows Forms không?" – Sarathy

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

Sau đó bạn có thể làm bất cứ điều gì bạn muốn làm với điều đó "strUserName" biến. Xin lưu ý nó cũng chứa tên miền nếu có.

Các vấn đề liên quan