Impersonation Property
Collapse the table of content
Expand the table of content

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

public ImpersonationLevel Impersonation { get; set; }
/** @property */
public ImpersonationLevel get_Impersonation ()

/** @property */
public void set_Impersonation (ImpersonationLevel value)

public function get Impersonation () : ImpersonationLevel

public function set Impersonation (value : ImpersonationLevel)

Not applicable.

Property Value

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 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

Community Additions

© 2016 Microsoft