using System.Management;... public static string? GetProcessOwner(int processId) { string? MethodResult = null; try { string Query = $"SELECT * FROM WIN32_PROCESS WHERE ProcessId = {processId}"; ManagementObjectCollection Processes = new ManagementObjectSearcher(Query).Get(); foreach (ManagementObject Process in Processes.Cast<ManagementObject>()) { string[] Args = ["", ""]; int ReturnCode = Convert.ToInt32(Process.InvokeMethod("GetOwner", Args)); MethodResult = ReturnCode switch { 0 => Args[1] + "\\" + Args[0], _ => "NONE", }; } } catch (Exception ex) { MessageBox.Show($"Error geting process owner: \n{ex.Message}"); } return MethodResult; }