Overview

Process Explorer

Copyright © 1996-2005 Mark Russinovich

Sysinternals - www.sysinternals.com

Process Explorer is an advanced process management utility that picks up where Task Manager leaves off. It will show you detailed information about a process including its icon, command-line, full image path, memory statistics, user account, security attributes, and more. When you zoom in on a particular process you can list the DLLs it has loaded or the operating system resource handles it has open. A search capability enables you to track down a process that has a resource opened, such as a file, directory or Registry key, or to view the list of processes that have a DLL loaded.

The Process Explorer display consists of two sub-windows. The top always shows a list of the currently active processes, including the names of their owning accounts, whereas the information displayed in the bottom window, which you can close, depends on the mode that Process Explorer is in: if it is in handle mode you will see the handles that the process selected in the top window has opened; if Process Explorer is in DLL mode you will see the DLLs and memory-mapped files that the process has loaded.

Process Explorer also has a powerful search capability that will quickly show you which processes have particular handles opened or DLLs loaded. The unique capabilities of Process Explorer make it useful for tracking down DLL-version problems or handle leaks, and provide insight into the way Windows and applications work.

You can obtain equivalent command-line tools, Handle and ListDLLs, at the Sysinternals Web site.

Process Explorer does not require administrative privileges to run and works on Windows 9x/Me, Windows NT 4.0, Windows 2000, Windows XP, Server 2003 and on the x64 version of 64-bit Windows XP and Windows Server 2003.

License

Process Explorer may not be redistributed in any way, or by any means, without the prior written permission of Sysinternals LLC. If you wish to redistribute Process Explorer, for example for use within an organization, please contact licensing@sysinternals.com.


The Main Window

Views

The Process Explorer window shows by default two panes: the upper pane is always a process list and the bottom either shows the list of DLLs loaded into the process selected in the upper pane, or the list of operating system resource handles (files, Registry keys, synchronization objects) the process has open; the view mode determines which information is shown in the bottom pane. To switch the view, use the View|Lower Pane View menu item, the corresponding toolbar button (which toggles), or the Ctrl+D (DLL view) and Ctrl-H (handle view) accelerator keys.

If you are only interested in seeing the processes running on your system You can hide the lower pane by selecting View|Hide Lower Pane, the corresponding toolbar button, the Ctrl+L accelerator, or by dragging the pane divider to the bottom of the Process Explorer window. You can bring back the lower pane by selecting View|Show Lower Pane, typing Ctrl+L or selecting the toolbar button again.

Mini Graphs

Process Explorer includes a toolbar and mini graphs for CPU, memory, and if on Windows 2000 or higher, I/O history, at the top of the main window. They can be resized with respect to one another or dragged such that each is on a separate row. The mini-graphs show history of system activity and hovering the mouse over a point on a graph displays in a tooltip the associated time and the process information for point in time. For example, the tooltip for the mini-CPU graph shows the process that was the largest consumer of CPU. Clicking on any of the mini-graphs opens the System Information dialog.

Refresh Rate and Difference Highlighting

Configure the rate at which Process Explorer refreshes its window by using the View|Update Speed menu item. You can refresh the view manually at any time with View|Refresh, the refresh toolbar button, or by pressing F5. Some checks, such as whether a process is part of a Job object or uses the .NET runtime, only occur during process startup. Press F5 to have Process Explorer recheck the status of all processes.

Process Explorer uses difference highlighting to help you see what items change between refreshes. Items, including processes, DLLs, and handles, that exit or are closed show in red and new items show in green. If the refresh rate is not paused the highlighting remains in effect for the interval specified by the Options|Difference Highlight Duration dialog, which has a default value of 1 second. If you pause the display the difference highlighting is in effect only until the next time you manually refresh.

Opacity

You can make the Process Explorer window partially transparent so that windows beneath it show through on systems that support it by making a selection under the View|Opacity menu item.

Saving

When you choose File|Save Process Explorer saves the contents of the Process and lower pane, if it is showing, as a tab-delimited text file.

Shutting Down or Logging Off
Use the File|Shutdown menu items to shutdown, reboot, lock or logoff the system. When available, the menu also offers options for hibernating and suspending the system.

Run
Use this option to run other applications from Process Explorer using the standard Windows Run dialog.

Runas
This variant on the Run command allows you to enter alternate credentials for the launching application. Process Explorer leverages the same Windows functionality as the Runas Windows command to provide this support. The Runas menu item is not present on Windows 9x.

Run as Limited User
This variant on the Run command runs the application you specify in the same account as that of Process Explorer, but without administrative privileges or membership in the local administrators group. This option restricts the exposure of your system from applications, such as Internet Explorer, that might be compromised through access of untrusted data.


Columns and Column Sets

Column Selection

The information Process Explorer displays in its main window is fully configurable. You can reorder columns by dragging them to their new position. To select which columns of data you want visible in each of the views and the status bar, choose View|Select Columns or right-click on a column header and use Select Columns from the resulting context menu. A column selection editor opens that let's you pick the columns you want to enable for the Process, DLL, handle panes, and status bar.

Column Sets
You can save a column configuration and its associated sort settings by choosing View|Save Column Set. Process Explorer will prompt you to name the column set. You can load a saved column set by selecting it in the View|Load Column Set menu or by entering its associated accelerator keys. To reorder or rename existing column sets go to View|Organize Column Sets to open the column set organizer.


Running in the Tray

General Options

Command-Line Usage: Process Explorer takes two options that modify its behavior:

/t | Start Process Explorer minimized in the tray.
/p:[r|h|n|l] | Set Process Explorer's priority to realtime (r), high (h), normal (n), or low (l).

Always on Top: Choose this option to have Process Explorer's window remain above other windows.

Replace Task Manager: Select the Replace Task Manager entry under the Options menu to have Process Explorer execute instead of Task Manager when you launch Task Manager. Note that this is a global setting that affects all users regardless of how they start Task Manager.

Hide When Minimized: check this item in the Options menu to have Process Explorer run in the tray as a small graph reflecting current CPU usage when you minimize it. If CPU usage is under 70% the meter shows in green; if its between 70% and 90% it shows in yellow; if its above 90% it shows in red. The CPU usage graph updates at the currently defined refresh interval. If you want Process Explorer to start in the tray then specify the /t option as its command-line argument. Single-clicking on Process Explorer's tray icon restores the window and brings it to the foreground, regardless of whether its minimized in the tray or not.

Allow Only One Instance: check this to prevent multiple instances of Process Explorer to run simultaneously.

Confirm Kill: uncheck this if you do not want Process Explorer to prompt you for confirmation before terminating a process you've directed it to kill.

CPU History in Tray: this option toggles Process Explorer's tray icon between a standard chart representation of the current CPU usage and a miniature version of the CPU history graph.

Verify Image Signatures: if this is checked then images corresponding to processes are checked for trusted signatures automatically when you view a process properties and the result is shown next to the company field in the process properties dialog. "(Verified)" next a company name means the file is signed by a trusted root certificate authority and "(Unable to Verify)" means the file is either unsigned or signed by an untrusted authority. Uncheck this option to speed performance when viewing process image properties.

Configure Symbols: on Windows NT and higher, if you want Process Explorer to resolve addresses for thread start addresses in the threads tab of the process properties dialog and the thread stack window then configure symbols by first downloading the Debugging Tools for Windows package from Microsoft's web site and installing it in its default directory. Open the Configure Symbols dialog and specify the path to the dbghelp.dll that's in the Debugging Tools directory and have the symbol engine download symbols on demand from Microsoft to a directory on your disk by entering a symbol server string for the symbol path. For example, to have symbols download to the c:\symbols directory you would enter this string:

srv*c:\symbols*http://msdl.microsoft.com/download/symbols

Difference Highlight Duration: this dialog allows you to configure the duration of time that new processes show in green and ones that have exited show in red. The default is one second. You can change the highlighting colors by editing them in the Configure Highlighting dialog that you open in the Options menu.


System Information

On Windows NT and higher the System Information entry in the View menu and typing Ctrl+I opens a dialog box that shows global system performance metrics like those shown in Task Manager. The information includes the amount of committed and available virtual and physical memory as well as paged and nonpaged kernel buffer usage.

Graphs show the CPU usage history of the system as well as the committed virtual memory usage, and on Windows 2000 or higher systems an I/O graph shows I/O throughput history. Red in the CPU usage graph indicates CPU usage in kernel-mode whereas green is the sum of kernel-mode and user-mode execution. When committed virtual memory, which Task Manager labels in its graphs on Windows 2000 and higher as "PF Usage" and on NT 4 as "Mem Usage", reaches the system Commit Limit, applications and the system become unstable. The Commit Limit is the sum of most of physical memory and the sizes of any paging files. In the I/O graph the blue line indicates total I/O traffic, which is the sum of all process I/O reads and writes, between refreshes and the pink line shows write traffic.

When you move the mouse over the CPU graph a popup displays either on the far left or right of the graph that shows the CPU usage and name of the process that had the largest contribution to CPU usage at the corresponding point in time, as well as the time of the point. Similarly, time stamp information for a point is shown in the Commit graph. Finally, on the I/O graph the tooltip shows the process performing the most I/O at the time of the point, including the amount of data it read and wrote. The popups update as data moves under the mouse, but you can freeze a popup by right clicking and the move the mouse to unfreeze the popup.

On systems with multiple CPUs the System Information dialog includes a Show one graph per CPU checkbox. Checking it switches the display into a per-processor view. Hyperthreaded (SMT) processors sharing the same core and NUMA processors sharing the same node are grouped together and the mouse tooltip shown when hovering over a graph displays the processor and core or node numbers. Note that the mouse tooltips for a processor graph show the name of the process that consumed the most CPU on the entire system at the associated time, not the process that consumed the most CPU on the particular CPU.


The Process View

Sorting and the Process Tree

By default Process Explorer sorts processes into the system process tree. The process tree reflects the parent-child relationship between processes where child processes are shown directly beneath their parent and right-indented. Processes that are left-justified are orphans; their parent has exited. To change the sort order simply click on a the column by which you wish to sort. To return the sort to the process tree select View|Show Process Tree, click the process tree toolbar button, or type Ctrl+T.


Interrupts and DPCs

On Windows NT-based systems Process Explorer shows two artificial processes: Interrupts and DPCs. These processes reflect the amount of time the system spends servicing hardware interrupts and Deferred Procedure Calls (DPCs), respectively. High CPU consumption by these activities can indicate a hardware problem or device driver bug. To see the total number of interrupts and DPCs executed since the system booted add the Context Switch column. Another sometimes useful metric is the number of interrupts and DPCs generated per refresh interval, which you see when you add the CSwitches Delta column.


Finding a Window's Process

Find Window's Process

You can highlight the process that owns a window visible on the desktop by dragging the target-like toolbar button over the window in question. Process Explorer will select the owning process entry in the process view.


Options

Process View Options

Several items in the Options and View menus affect the way processes display:

Configure Highlighting: select this menu item under the Options menu to open a dialog box that allows you to configure highlight colors used in the Process View and the DLL view.

Highlight Services: on Windows NT and higher this option has Process Explorer show processes that are running Win32 services in the service process highlight color. The Services tab of the process properties dialog shows the list of services running within a process.

Highlight Jobs: on Windows 2000 and higher choose this option to have Process Explorer show processes that are part of a Win32 Job in the Job object highlight color. Jobs group processes together so that they can be managed as a single item and are used by the Runas command, for example. Use the Job tab of the process properties dialog to see the list of processes running in the same job as the selected process and to see job limits that have been applied to the job.

Highlight .NET Processes: this option appears on Windows NT-based systems that have the .NET Framework installed. When the option is checked managed applications (those that use the .NET Framework) are highlighted in the .NET process highlight color.

Highlight Own Processes: on Windows NT and higher checking this option results in Process Explorer showing in the own-process highlight color the processes that are running in the same user account as Process Explorer.

Highlight Packed Images: malware, including viruses, spyware, and adware is often stored in a packed encrypted form on disk in order to attempt to hide the code it contains from antispyware and antivirus.

Show Fractional CPU: when this option is selected Process Explorer shows CPU usage to two decimal places. This can be useful to identify processes that would otherwise appear idle, but that are performing background processing.

Show New Processes: when enabled Process Explorer scrolls the Process view to bring into view new processes.


The Process Context Menu

When you have a process selected the items in the Process menu become active. You can access the same menu items by right-clicking on a process. The items enable you to do the following:

Bring to Front: select this option to bring any windows owned by the selected process to the foreground.

Set Priority: you can change the base priority of a process with this submenu. When you change the base priority of a process the system adjusts the priorities of threads within the process so that they remain at the same relative priority with respect to the new base priority.

Set Affinity: on systems with multiple CPUs this menu item lets you bind the threads of a process to particular CPUs.

Debug: choosing this menu item launches the debugger registered in HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug with the selected process as the command-line argument.

Launch Depends: if Process Explorer finds the Dependency Walker tool (see http://www.dependencywalker.com) with the selected process as the argument. The Dependency Walker tool shows static DLL dependencies.

Kill: this item terminates a process with the Terminate Process API. Note that a process terminated in this way is not warned of its termination and therefore does not write unsaved data it may have.

Kill Process Tree: if the process pane is in the process tree sorting mode this menu item is available and allows you to kill a process and all of its descendants.

Suspend: if you want a process to become temporarily inactive, so that a system resource such as network, CPU or disk, becomes available for other processes, you can suspend the process. Suspended processes show in a dark grey color. To resume a suspended process chose the Resume item from the process context menu.

Restart: when you select this item Process Explorer terminates the highlighted process and starts the same image using the same command-line arguments. Note that the new instance may fail to run or behave differently if the original process ran in a different user account or had a different environment.

Properties: this selection opens a property dialog that shows you more information about a process.

Google/MSN Search: selecting this entry will result in Process Explorer launching the system's configured Internet browser and initiating a search on Google.com for the selected process' name. You can configure the search engine in the Options|Search Engine menu.


Process Properties

You can view additional details for a process by double-clicking on it, or by selecting it and using the Process|Properties menu item or the properties toolbar button. On Windows 9x systems the dialog shows version information for the process image, the full path of the process image file, and the command-line used to launch the process. On Windows NT and higher there are several tabs in the dialog, described below. Any dynamic data, such as performance information, updates at the refresh date currently selected for Process Explorer. You can manually refresh dynamic information by typing F5 in a page.

Image:

This page shows version information extracted from the process' image file, the full path of the image file and the command-line that launched the process. It also shows the current directory of the process, the user account in which the process is running, the name of the process' parent process, and the time at which the process started execution.

Process Explorer checks for whether or not an image has been digitally signed by a certificate root authority trusted by the computer and displays the status of the check, which is either "Trusted" (signed), "Unsigned", or "Not Verified" (signature has not been checked). You can press the Verify button to have Process Explorer check the signature of an image that has not been verified. Note that the verification operation can result in Process Explorer contacting web sites to check for certificate validity. See the Verify Image Signatures option.

Enter a comment for a process in the Comment field. Comments are visible in the process view in the Comment column, or if you do not have the comment column selected, in the tool tip that displays when you hover the mouse over a process. Comments apply to all processes with the same path and are remembered from execution to execution.

On systems that support Data Execution Protection (DEP), Process Explorer shows the DEP status of the selected process as either "software", "hardware" or "off". Software DEP is currently supported by Windows XP SP2 and higher on 32-bit x86 systems whereas hardware DEP is available only on 64-bit versions of Windows. You can also view DEP status by adding the corresponding DEP Status column to the process view.

Malware, including viruses, spyware, and adware is often stored in a packed encrypted form on disk in order to attempt to hide the code it contains from antispyware and antivirus. Process Explorer uses a heuristic to determine if an image is packed and if it is changes the text above the full path display field to include "(Image is probably packed)".

Performance:

Memory and CPU performance data displays on this page, including physical and virtual memory, and CPU usage. The data refreshes at the same interval that the main display does.

Performance Graph:

A history of a process' CPU usage and its private bytes allocation shows as in Task Manager-like graphs on this page. Red in the CPU usage graph indicates CPU usage in kernel-mode whereas green is the sum of kernel-mode and user-mode execution. Private Bytes represents the amount of private virtual memory a process has allocated and is the value that will rise of a process exhibiting a memory leak bug. Note that while the System Information performance graphs update while Process Explorer is minimized to the tray, these graphs do not. The private bytes usage graphs are scaled against the peak amount of private bytes the process has allocated; if the peak grows the graphs recalculate their scales. In the I/O graph the blue line indicates total I/O traffic, which is the sum of all process I/O reads and writes, between refreshes and the pink line shows write traffic. The I/O graph is scaled against the peak I/O traffic the process has generated since the start of monitoring.

Moving the mouse over part of a graph results in the time of the corresponding data point being shown in the graph as a popup either on the far left or right.

Threads:

The list of the threads running in the process shows on this tab. The thread list shows start address information that's provided by the Windows symbol engine. If you want to see accurate names for start addresses then follow the directions for configuring symbols.

The Module button on the threads page launches Explorer's file properties dialog box for the image file that contains the start address of the currently selected thread. The Stack button shows the current stack of the selected thread. Stack information is unreliable unless symbol files are available for process and DLLs referenced in the stack.

Use the Kill button to terminate a thread. Note that terminating a thread may lead to a crash or erratic behavior of the process.

Use the Suspend button to suspend a thread. Note that suspending threads may cause its process to stop executing.

TCP/IP:

Any active TCP and UDP endpoints owned by the process are shown on this page.

On Windows XP SP2 and higher this page includes a Stack button that opens a dialog that shows the stack of the thread that opened the selected endpoint at the time of the open. This is useful for identifying the purpose of endpoints in the System process and Svchost processes because the stack will include the name of the driver or service that is responsible for the endpoint.

Security:

Process Explorer reports the list of groups and privileges listed in the security token of the process on this page. Privileges shown in grey are disabled. The permissions button opens a permissions editor that shows the access permissions assigned to the process.

Job:

This tab is present only for processes that are part of a Win32 Job. The Job page shows the list of processes that are part of the same job and the limits that are applied to the job.

.NET:

This tab is present only for managed processes, which are those that use the .NET Framework. The AppDomains present in the process show, as well the available .NET performance counter objects. Select a .NET performance object to see the values of the object's counters. The counters update at the currently selected refresh interval and you can type F5 to manually refresh.

Services:

This tab is present only for processes that are executing Win32 services, and lists the services running within the process. Process Explorer shows a service's name and display name, and on Windows 2000 and higher, if available, the service's description. The permissions button opens a permissions editor that shows the access permissions assigned to the service.

Environment:

The environment variables associated with the process show on this page.

Strings:

All printable strings of at least 3 characters in length display on this page. Image strings are read from the process image file on disk whereas Memory strings are read from the image's in-memory storage. Memory strings may be different than on-disk strings when an image uses a decompresses or decrypts when it loads into memory.


The DLL View

The DLL Context Menu

The DLL view shows the image file, DLLs, and data files mapped into the address space of the selected process. When you click the properties toolbar button or select Properties from the DLL menu Process Explorer opens a properties dialog for the DLL or mapped file that contains two tabs:

Image:

This page shows version information extracted from the image file and the full path of the image file.

Process Explorer checks for whether or not an image has been digitally signed by a certificate root authority trusted by the computer and displays the status of the check, which is either "Trusted" (signed), "Unsigned", or "Not Verified" (signature has not been checked). You can press the Verify button to have Process Explorer check the signature of an image that has not been verified. Note that the verification operation can result in Process Explorer contacting web sites to check for certificate validity. See the Verify Image Signatures option.

Malware, including viruses, spyware, and adware is often stored in a packed encrypted form on disk in order to attempt to hide the code it contains from antispyware and antivirus. Process Explorer uses a heuristic to determine if an image is packed and if it is changes the text above the full path display field to include "(Image is probably packed)".

Strings:

All printable strings of at least 3 characters in length display on this page. Image strings are read from the process image file on disk whereas Memory strings are read from the image's in-memory storage. Memory strings may be different than on-disk strings when an image uses a decompresses or decrypts when it loads into memory.

Highlight Relocated DLLs

When you select the Relocated DLLs entry in the Options|Configure Highlighting dialog any DLLs that are not loaded at their programmed base address show in yellow. DLLs that cannot load at their base address because other files are already mapped there are relocated by the loader, which consumes CPU and makes parts of the DLL that are modified as part of the relocation un-sharable.

Google/MSN Search
Selecting this entry will result in Process Explorer launching the system's configured Internet browser and initiating a search on Google.com or MSN Search for the selected DLL's name. Configure the search engine in Options|Search Engine.


The Handle View

The Handle Context Menu

Two items appear under the Handle menu or when you right-click to show the Handle context menu:

Close Handle: choose this item to force closed a handle. Use this at your own risk: because the process that owns the handle is not aware that its handle has been closed, using this feature can lead to a crash of the application or data corruption; closing a handle in the System process can lead to a system crash.

Properties: when you select this item Process Explorer opens a handle properties dialog that shows you the total number of handles open to the object, as well as kernel references to the object. It also shows information specific to the type of object you are viewing. For example, when you view the properties of a mutant object Process Explorer reports whether or not the mutant is held, and if so, by which thread.

The Security tab on the handle properties dialog shows the security that's applied to the object the handle references.

Show Unnamed Handles

By default, Process Explorer shows only handles to object that have names. Select the Show Unnamed Handles item under the View menu to have Process Explorer list all the handles opened by a selected process, even those to objects that are nameless. Note that Process Explorer consumes significantly more CPU resource when this option is selected.


The Users Menu

On systems that include Terminal Services Process Explorer displays a Users menu that lists the currently connected sessions. Process Explorer creates a menu entry for each session that's name includes the session's session ID and the user logged into the session. Each entry opens a sub menu that has options for disconnecting, logging off, and sending a message to the session's user. In addition, a Properties menu for each session entry opens a dialog box that lists detailed information about the session, including the IP address and name of the client connected to the session.

The contents of the Users menu is updated each time you open the menu to reflect current session information.


Searching

One of the common problems Process Explorer solves with ease is the question: what process has this file or directory open, or which processes have a particular DLL loaded?

You can perform a handle and DLL search by selecting Find|Find Handle or DLL or by typing Ctrl+F. Searches are case insensitive substring searches of all of the handles opened and DLLs loaded on the system with the text you enter. Thus, to search for the process or processes that have c:\directory\somefile.txt open enter enough text to make the search find only the results you are interested in e.g. "somefile".

The search dialog populates with the list of results indexed by process. Select a line in the results to have Process Explorer select the reported process and DLL or handle, and double-click on a line to have it do the same and dismiss the Search dialog.


Reporting Bugs

If you encounter a bug while using Process Explorer please send e-mail to mark@sysinternals.com with the following information:

  • Operating system version

  • Process Explorer version

  • Description of the behavior you expect versus the behavior you observe

  • Detailed steps for reproducing the problem


The process View

Type topic text here.