How to enumerate the managed processes and AppDomains

Article ID: 2527106
Expand all | Collapse all

On This Page

INTRODUCTION

This article describes an All-In-One Code Framework sample that is available for download. The sample demonstrates how to enumerate the following tasks:
  • Show application domains (AppDomains) in current process.
  • List all managed processes.
  • Show the AppDomains in a specified process.

Difficulty level

Collapse this imageExpand this image
codefx Medium

Download information

To download this code sample, click one of the following links:

    


Technical overview

Show AppDomains in current process

The ICorRuntimeHost interface provides a method to enumerate all domains that are running in the process. You can create an instance of CorRuntimeHostClass which implements the ICorRuntimeHost interface, and then get an enumerator for the domains in the current process.

List all managed processes

To identify whether a process is a managed process, you can check whether it loads CLRs. The ICLRMetaHost interface provides a method that returns a list of all runtimes that are loaded in a specified process. You can get all the running processes, and then check whether they load CLRs.

Show the AppDomains in a specified process

If you want to enumerate the AppDomains in the process, attach a debugger to the process by using a debugging API, then you can get an instance of CorProcess that has a property to get all the AppDomains in the attached process.
The follows are the definition of the hosting APIs in the COM reference:

Common Language Runtime Execution Engine 2.4 Library. And the debugging APIs is included in mdbgcore.dll that is a part of Windows SDK.
Notes
  • You cannot debug your own process. However, you can use the  ICorRuntimeHost interface to enumerate the AppDomains in the current process.
  • If you want to enumerate 32 bit managed processes in 64 bit OS, you have to set the application platform to 32 bit platform.
  • Some processes cannot be attached for the following reasons:
    • The processes (such as *.exe.vshost) have already been attached.
    • The processes are not in the synchronized state. However, some steps of the attach operation require that the processes should be in Synchronized state. For more information about pre-conditions for the CorDebug.idl interfaces, visit the following MSDN website:
      General information about pre-conditions for the CorDebug.idl interfaces

  • For more information about how to create and deploy the sample application, see the Readme.txt file that is included in the download package.

Technology category

  • CLR

Languages

This code sample contains the following programming languages:
Collapse this tableExpand this table
LanguageProject Name
Visual C#CSEnumerateAppDomains
Visual Basic.NETVBEnumerateAppDomains

MORE INFORMATION

What is All-In-One Code Framework?

All-In-One Code Framework shows most Microsoft development techniques by using code samples in different programming languages. Each example is carefully selected, composed, and documented to show one common code scenario. For more information about All-In-One Code Framework, visit the following Microsoft website:
http://1code.codeplex.com

How to find more All-In-One Code Framework samples

To find more All-In-One Code Framework samples, search for "kbcodefx" together with related keywords on the Microsoft support Web site. Or, visit the following Microsoft website:
All-In-One Code Framework samples

REFERENCES

For more information about the ICorRuntimeHost interface, visit the following MSDN website: 
General information about the ICorRuntimeHost interface
For more information about the ICLRMetaHost interface, visit the following Microsoft website:
General information about the ICLRMetaHost interface
For more information about debugging (Unmanaged API Reference), visit the following Microsoft website:
General information about debugging (Unmanaged API Reference)
Rapid publishing disclaimer
Microsoft corporation and/or its respective suppliers make no representations about the suitability, reliability, or accuracy of the information and related graphics contained herein. All such information and related graphics are provided "as is" without warranty of any kind. Microsoft and/or its respective suppliers hereby disclaim all warranties and conditions with regard to this information and related graphics, including all implied warranties and conditions of merchantability, fitness for a particular purpose, workmanlike effort, title and non-infringement. You specifically agree that in no event shall Microsoft and/or its suppliers be liable for any direct, indirect, punitive, incidental, special, consequential damages or any damages whatsoever including, without limitation, damages for loss of use, data or profits, arising out of or in any way connected with the use of or inability to use the information and related graphics contained herein, whether based on contract, tort, negligence, strict liability or otherwise, even if Microsoft or any of its suppliers has been advised of the possibility of damages.

Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Properties

Article ID: 2527106 - Last Review: April 7, 2011 - Revision: 1.0
Keywords: 
kbcodefx kbinfo kbsurveynew kbnomt kbrapidpub atdownload KB2527106

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com