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);
                }
            }
        }
Exemple #2
0
        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;
        }