请教各位大虾。如何判断下断代码中的pr是属于哪个windows用户。比如是administrator用户还是SYSTEM用户
请各位大虾不吝赐教谢谢foreach (Process pr in Process.GetProcesses())
{
if (pr.ProcessName == txtFileName.Text)
{
flag = true;
return;
}
}
请各位大虾不吝赐教谢谢foreach (Process pr in Process.GetProcesses())
{
if (pr.ProcessName == txtFileName.Text)
{
flag = true;
return;
}
}
{ string text1 = null; SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1); try
{
foreach (ManagementObject disk in searcher1.Get())
{
ManagementBaseObject inPar = null;
ManagementBaseObject outPar = null; inPar = disk.GetMethodParameters("GetOwner"); outPar = disk.InvokeMethod("GetOwner", inPar, null); text1 = outPar["User"].ToString();
break;
}
}
catch
{
text1 = "SYSTEM";
} return text1;
}
private void button1_Click(object sender, EventArgs e)
{
foreach (Process p in Process.GetProcesses())
{
Console.Write(p.ProcessName);
MessageBox.Show(p.ProcessName + "---" + GetProcessUserName(p.Id)); } }
{
User = String.Empty;
Domain = String.Empty;
OwnerSID = String.Empty;
string processname = String.Empty;
try
{
ObjectQuery sq = new ObjectQuery
("Select * from Win32_Process Where ProcessID = '" + PID + "'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(sq);
if (searcher.Get().Count == 0)
return OwnerSID;
foreach (ManagementObject oReturn in searcher.Get())
{
string[] o = new String[2];
//Invoke the method and populate the o var with the user name and domain
oReturn.InvokeMethod("GetOwner", (object[])o); //int pid = (int)oReturn["ProcessID"];
processname = (string)oReturn["Name"];
//dr[2] = oReturn["Description"];
User = o[0];
if (User == null)
User = String.Empty;
Domain = o[1];
if (Domain == null)
Domain = String.Empty;
string[] sid = new String[1];
oReturn.InvokeMethod("GetOwnerSid", (object[])sid);
OwnerSID = sid[0];
return OwnerSID;
}
}
catch
{
return OwnerSID;
}
return OwnerSID;
}方法二:WIN32API获取,看这里:
http://www.codeproject.com/KB/cs/processownersid.aspx