Procesos

27/09/2004 - 17:23 por Anonimo | Informe spam
Hola estoy usando la clase Process para obtener
información de los procesos que están en memoria, pero no
se como preguntar cual usuario es el dueño del proceso. Al
guien sabe de donde lo puedo sacar????
Gracias.
 

Leer las respuestas

#1 Octavio Telis Aynes
27/09/2004 - 23:10 | Informe spam
Siempre hay manera con .NET Framework (pareció comercial)...

Utiliza el siguiente método... espero sirva a tus propósitos.

private System.Data.DataTable ObtenerProcesosSistema()
{
DataTable dt = new System.Data.DataTable("Procesos");
DataRow dr;
System.Management.ObjectQuery objectQuery = new
System.Management.ObjectQuery("Select * from Win32_Process");
System.Management.ManagementObjectSearcher managementObjectSearcher = new
System.Management.ManagementObjectSearcher(objectQuery);

dt.Columns.Add("Caption");
dt.Columns.Add("Description");
dt.Columns.Add("ProcessId");
dt.Columns.Add("Priority");
dt.Columns.Add("User");
try
{
foreach (System.Management.ManagementObject share in
managementObjectSearcher.Get())
{
string User;
string Domain;

System.Management.ManagementBaseObject inParams = null;
bool EnablePrivileges = share.Scope.Options.EnablePrivileges;
share.Scope.Options.EnablePrivileges = true;
System.Management.ManagementBaseObject outParams share.InvokeMethod("GetOwner", inParams, null);
Domain = System.Convert.ToString(outParams.Properties["Domain"].Value);
User = System.Convert.ToString(outParams.Properties["User"].Value);
share.Scope.Options.EnablePrivileges = EnablePrivileges;

dr = dt.NewRow();
dr["Caption"] = share["Caption"].ToString();
dr["Description"] = share["Description"].ToString();
dr["ProcessId"] = share["ProcessId"].ToString();
dr["Priority"] = share["Priority"].ToString();
dr["User"] = User;
dt.Rows.Add(dr);
}
}
catch (System.Management.ManagementException ex)
{
MessageBox.Show( ex.Message );
}

return dt;
}

Bueno... este método puedes utilizarlo para obtener más infomración de la
que te presento aquí.

Como este método devuelve un DataTable, puedes verlo en un datagrid:

dataGrid1.DataSource = ObtenerProcesosSistema();

Por cierto, no se olviden de referenciar System.Management.dll. además de
incluir " using System.Management; " en la cabecera del código. Bueno, para
ver que otros campos se pueden incluir en este DataTable, date un volteón
por :

http://msdn.microsoft.com/library/e...rocess.asp

Hey!!! ... no estamos usando una API de Windows... es 100% .NET Framework.

Saludos...

Octavio Telis Aynés
www.comunidadpuntonet.org/df/


escribió en el mensaje
news:392101c4a4a5$f94c9000$
Hola estoy usando la clase Process para obtener
información de los procesos que están en memoria, pero no
se como preguntar cual usuario es el dueño del proceso. Al
guien sabe de donde lo puedo sacar????
Gracias.

Preguntas similares