This documentation is archived and is not being maintained.

ConnectionOptions.Impersonation Property

Gets or sets the COM impersonation level to be used for operations in this connection.

Namespace:  System.Management
Assembly:  System.Management (in System.Management.dll)

public ImpersonationLevel Impersonation { get; set; }

Property Value

Type: System.Management.ImpersonationLevel
Returns an ImpersonationLevel enumeration value indicating the impersonation level used to connect to WMI.

The ImpersonationLevel.Impersonate setting is advantageous when the provider is a trusted application or service. It eliminates the need for the provider to perform client identity and access checks for the requested operations. However, if for some reason the provider cannot be trusted, allowing it to impersonate the client may constitute a security threat. In such cases, we recommend that this property be set by the client to a lower value, such as ImpersonationLevel.Identify. Note that this may cause failure of the provider to perform the requested operations, for lack of sufficient permissions or inability to perform access checks.

Property Value

The COM impersonation level to be used for operations in this connection. The default value is ImpersonationLevel.Impersonate, which indicates that the WMI provider can impersonate the client when performing the requested operations in this connection.

.NET Framework Security

Full trust for the immediate caller. This member cannot be used by partially trusted code. For more information, see Using Libraries from Partially Trusted Code.

The following example connects to a remote computer and displays information about the operating system on the remote computer. A ConnectionOptions is created to connect to the remote computer with the desired connection options.

using System;
using System.Management;
public class RemoteConnect 
    public static void Main() 
        // Build an options object for the remote connection 
        // if you plan to connect to the remote 
        // computer with a different user name 
        // and password than the one you are currently using. 
        // This example uses the default values.  
        ConnectionOptions options = 
            new ConnectionOptions();
        options.Impersonation = 

        // Make a connection to a remote computer. 
        // Replace the "FullComputerName" section of the
        // string "\\\\FullComputerName\\root\\cimv2" with
        // the full computer name or IP address of the 
        // remote computer.
        ManagementScope scope = 
            new ManagementScope(
            "\\\\FullComputerName\\root\\cimv2", options);

        //Query system for Operating System information
        ObjectQuery query = new ObjectQuery(
            "SELECT * FROM Win32_OperatingSystem");
        ManagementObjectSearcher searcher = 
            new ManagementObjectSearcher(scope,query);

        ManagementObjectCollection queryCollection = searcher.Get();
        foreach ( ManagementObject m in queryCollection)
            // Display the remote computer information
            Console.WriteLine("Computer Name : {0}", 
            Console.WriteLine("Windows Directory : {0}", 
            Console.WriteLine("Operating System: {0}",  
            Console.WriteLine("Version: {0}", m["Version"]);
            Console.WriteLine("Manufacturer : {0}", 

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0