Click here to Skip to main content
Click here to Skip to main content
Articles » Languages » C# » How To » Downloads
 
Add your own
alternative version

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

, 3 Apr 2007 CPOL
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; }
        }
        #endregion
              
        #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;

            try
            {
                connectScope.Connect();
            }
            catch (ManagementException e)
            {
                Console.WriteLine("An Error Occurred: " + e.Message.ToString());
            }
            return connectScope;
        }
        #endregion

        #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);
        }
        #endregion

        #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);
        }
        #endregion
      
   }
}

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.

License

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

Share

About the Author

thund3rstruck
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.

| Advertise | Privacy | Mobile
Web01 | 2.8.141015.1 | Last Updated 3 Apr 2007
Article Copyright 2007 by thund3rstruck
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid