Click here to Skip to main content
13,349,293 members (62,345 online)
Click here to Skip to main content
Articles » Languages » C# » How To » Downloads


139 bookmarked
Posted 3 Apr 2007

How To: (Almost) Everything In WMI via C# - Part 3: Hardware

, 3 Apr 2007
An Extensible Framework for enumerating WMI Class Properties
using System;
using System.Management;
using System.Collections.Generic;
using System.Text;

namespace baileysoft.Wmi
    class Connection
        ManagementScope connectionScope;
        ConnectionOptions options;

        #region "properties"
        public ManagementScope GetConnectionScope
            get { return connectionScope; }
        public ConnectionOptions GetOptions
            get { return options; }
        #region "static helpers"
        public static ConnectionOptions SetConnectionOptions()
            ConnectionOptions options = new ConnectionOptions();
            options.Impersonation = ImpersonationLevel.Impersonate;
            options.Authentication = AuthenticationLevel.Default;
            options.EnablePrivileges = true;
            return options;

        public static ManagementScope SetConnectionScope(string machineName,
                                                   ConnectionOptions options)
            ManagementScope connectScope = new ManagementScope();
            connectScope.Path = new ManagementPath(@"\\" + machineName + @"\root\CIMV2");
            connectScope.Options = options;

            catch (ManagementException e)
                Console.WriteLine("An Error Occurred: " + e.Message.ToString());
            return connectScope;

        #region "constructors"
        public Connection()
            EstablishConnection(null, null, null, Environment.MachineName);

        public Connection(string userName,
                          string password,
                          string domain,
                          string machineName)
            EstablishConnection(userName, password, domain, machineName);

        #region "private helpers"
        private void EstablishConnection(string userName, string password, string domain, string machineName)
            options = Connection.SetConnectionOptions();
            if (domain != null || userName != null)
                options.Username = domain + "\\" + userName;
                options.Password = password;
            connectionScope = Connection.SetConnectionScope(machineName, options);

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Software Developer
United States United States
I'm a typical 30 year old generation X guy that likes video games, NFL football, and comic style art. I have an insatiable passion for programming and doing what ever it takes to become a better programmer.

You may also be interested in...

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.180111.1 | Last Updated 3 Apr 2007
Article Copyright 2007 by thund3rstruck
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid