Dowemo


Question:

I am looking for a process by the name of "MyApp.exe" and I want to make sure I get the process that is owned by a particular user.

I use the following code to get a list of the processes:

Process[] processes = Process.GetProcessesByName("MyApp");


This gives me a list of processes, but there does not appear to be a way in the Process class to determine who owns that process? Any thoughts on how I can do this?


Best Answer:


You can use WMI to get the user owning a certain process. To use WMI you need to add a reference to the System.Management.dll to your project.

By process id:

public string GetProcessOwner(int processId)


{


    string query = "Select * From Win32_Process Where ProcessID = " + processId;


    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);


    ManagementObjectCollection processList = searcher.Get();



    foreach (ManagementObject obj in processList)


    {


        string[] argList = new string[] { string.Empty, string.Empty };


        int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));


        if (returnVal == 0)


        {


            // return DOMAINuser


            return argList[1] + "" + argList[0];


        }


    }



    return "NO OWNER";


}


By process name (finds the first process only, adjust accordingly):

public string GetProcessOwner(string processName)


{


    string query = "Select * from Win32_Process Where Name = "" + processName + """;


    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);


    ManagementObjectCollection processList = searcher.Get();



    foreach (ManagementObject obj in processList)


    {


        string[] argList = new string[] { string.Empty, string.Empty };


        int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList));


        if (returnVal == 0)


        {


            // return DOMAINuser


            string owner = argList[1] + "" + argList[0];


            return owner;       


        }


    }



    return "NO OWNER";


}





Copyright © 2011 Dowemo All rights reserved.    Creative Commons   AboutUs