2010-07-15 41 views

Respuesta

2

Hola Todo lo que tengo la solución para mi pregunta. Usé WMI para obtener el nombre de usuario.

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

Gracias

0

lo que tengo entendido, se desea determinar de forma remota el nombre de usuario de las personas iniciar sesión para muchas PC y presentar los resultados en una aplicación Windows Forms.

Windows no tiene un mecanismo incorporado para enumerar esta información.

Independientemente del mecanismo que elijas en última instancia, probablemente necesites ejecutar la aplicación de escaneo en una cuenta de usuario que tenga derechos de administrador en la PC que se escanea.

Puede emular el comportamiento del comando SysInternals PsLoggedOn que examina la clave HKEY_USERS en la computadora remota. Para saber quién está conectado a una PC (es decir, acceder a recursos compartidos), use la API de NetSessionEnum.

Más información sobre PsLoggedOn se puede encontrar aquí: link text

+0

sí, quiero el segundo "¿Desea determinar de forma remota el nombre de usuario de las personas que iniciaron sesión en muchas PC y presentar los resultados en una aplicación de Windows Forms?" – Sarathy

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

A continuación, puede hacer lo que quiere hacer con que "strUserName" variable. Tenga en cuenta que también contiene el nombre de dominio si hay uno presente.

Cuestiones relacionadas