如题,一个程序会作为服务启动,也会在登录后手动开启,需要不同状态设置不同应用程序状态。
如果判断当前进程用户名是否为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;
        }