如题,一个程序会作为服务启动,也会在登录后手动开启,需要不同状态设置不同应用程序状态。
如果判断当前进程用户名是否为SYSTEM?
如下循环进程表时,会有2个同名进程同时存在,感觉不合适。
不知道有没有其他方法,直接获取当前进程所属用户名或者进程ID? static void Main(string[] args)
{ Console.WriteLine(AppDomain.CurrentDomain.Id.ToString());
foreach (Process p in Process.GetProcesses())
{
Console.Write(p.ProcessName);
Console.Write("----");
Console.WriteLine("p.id="+p.Id .ToString ()+" "+GetProcessUserName(p.Id));
} Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString());
Console.ReadKey();
} private static string GetProcessUserName(int pID)
{
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;
}
如果判断当前进程用户名是否为SYSTEM?
如下循环进程表时,会有2个同名进程同时存在,感觉不合适。
不知道有没有其他方法,直接获取当前进程所属用户名或者进程ID? static void Main(string[] args)
{ Console.WriteLine(AppDomain.CurrentDomain.Id.ToString());
foreach (Process p in Process.GetProcesses())
{
Console.Write(p.ProcessName);
Console.Write("----");
Console.WriteLine("p.id="+p.Id .ToString ()+" "+GetProcessUserName(p.Id));
} Console.WriteLine(Thread.CurrentThread.ManagedThreadId.ToString());
Console.ReadKey();
} private static string GetProcessUserName(int pID)
{
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;
}
解决方案 »
- c#程序如何发布
- datetimepicker 求时间差
- 无法安装或运行此应用程序。该应用程序要求首先在“全局程序集缓存(GAC)”中安装程序集stdole版本7.0.3300.0???
- 请高手说下办公自动化系统控制用户权限问题
- 为什么找不到控件
- C#里的代码注释规范
- 关于DAtaGrid的列的双击事件的问题!
- 警告: 不能将项目“serchform”中的依赖项“DbService, Version=1.0.1665.21758, Culture=neutral”复制到运行目录,因为它将改写引用“D
- C#多线程数据采集,但采集相同的数据,高手请进
- 大婶们速来给我解释下ia
- 有麻烦
- C# 调用C++的DLL 后释放内存?
或者
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
太感谢了!