public IEnumerable <ProcessInfo> GetProcessInfos() { //Get information about all processes var processes = Win32ProcessInformation.GetRunningProcessIDs(); //Get information about every process foreach (var pId in processes) { Win32ProcessInformation proc = null; WMIProcessInformation wmiPI; ProcessInfo model = null; try { proc = new Win32ProcessInformation(pId); wmiPI = new WMIProcessInformation(pId); //get winapi methods model = new ProcessInfo() { UserName = proc.RunningUserName(), BitDepth = proc.GetProcessBitness(), FullName = proc.FullName(), //icon = proc.ProcessIcon(), Id = pId, IsElevated = proc.IsElevated(), }; //Set name model.Name = System.IO.Path.GetFileName(model.FullName); //digital sign model.Sign = proc.SignatureExist(model.FullName); //Wmi methods model.CMDString = wmiPI.GetProcessCommandLine(); } catch (ArgumentException) { // cant open handle to processId } catch (Exception) { } finally { proc?.Dispose(); //Return Model } if (model != null) { yield return(model); } } }
private SuspendedProcess(Win32ProcessInformation processInformation, bool resumeOnDispose) { this.IsSuspended = true; // Suspended by default this.processHandle = new Win32ProcessSafeHandle(processInformation.ProcessHandle); this.threadHandle = new Win32ThreadSafeHandle(processInformation.ThreadHandle); this.ProcessId = processInformation.ProcessId; this.ThreadId = processInformation.ThreadId; this.resumeOnDispose = resumeOnDispose; }