Example #1
0
        static void Main(string[] args)
        {
            //Represents the scoop for management operations
            ManagementScope ms = new ManagementScope();

            //Provides a wrapper for building paths to WMI objects
            //Here we connect to the namespace called "CIMV2"
            ManagementPath path = new ManagementPath(@"\localhostrootCIMV2");

            //Represents a CIM management class
            ManagementClass newClass = new ManagementClass(path);

            //Provides a base class for query and enumeration-related options objects
            EnumerationOptions options = new EnumerationOptions();

            //Return class members that are immediately related to the class
            options.EnumerateDeep = false;

            //Retrieve the  subclasses using the specified options
            foreach (ManagementObject o in newClass.GetSubclasses(options))
            {
                Console.WriteLine(Convert.ToString(o["__Class"]));
            }
            Console.ReadLine();
        }
    public static void Main()
    {
        ManagementClass c =
            new ManagementClass("CIM_LogicalDisk");

        foreach (ManagementClass r in c.GetSubclasses())
        {
            Console.WriteLine(
                "Instances of {0} are sub-classes",
                r["__CLASS"]);
        }

        foreach (ManagementClass r in c.GetRelationshipClasses())
        {
            Console.WriteLine(
                "{0} is a relationship class to " +
                c.ClassPath.ClassName,
                r["__CLASS"]);

            foreach (ManagementClass related in c.GetRelatedClasses(
                         null, r.ClassPath.ClassName,
                         "Association", null, null, null, null))
            {
                Console.WriteLine(
                    "{0} is related to " + c.ClassPath.ClassName,
                    related.ClassPath.ClassName);
            }
        }

        return;
    }
Example #3
0
  }//ManagementSelectQuery
  
  ///<summary>LocalRootNamespacesClasses</summary>
  ///<remarks>Willy Denoyette [MVP] http://www.msdn.microsoft.com/newsgroups/default.aspx?pg=184&amp;guid=&amp;sloc=en-us&amp;dg=microsoft.public.dotnet.languages.csharp&amp;fltr=</remarks> 
  public static void LocalRootNamespacesClasses()
  {
   HttpContext                 httpContext                 =  HttpContext.Current;
   string                      cimRoot = "root\\";
   string                      exceptionMessage            =  null;
   EnumerationOptions          enumerationOptions;
   ManagementClass             managementClass;
   ManagementClass             managementClassSub;
   ManagementObjectCollection  managementObjectCollection;

   try
   {
    managementClass = new ManagementClass
    ( 
     new ManagementScope(@"root"),
     new ManagementPath("__namespace"),
     null
    );
 
    enumerationOptions = new EnumerationOptions();
    enumerationOptions.EnumerateDeep = true; // set to false if only the root classes are needed

    foreach ( ManagementObject managementObject in managementClass.GetInstances() )
    {
     System.Console.WriteLine(cimRoot + managementObject["Name"].ToString());
     managementClassSub = new ManagementClass
     (
      cimRoot + managementObject["Name"].ToString()
     );
     managementObjectCollection = managementClassSub.GetSubclasses( enumerationOptions );

     foreach( ManagementObject managementObjectSub in managementObjectCollection )
     {
      if ( managementObjectSub["__SuperClass"] == null )
      {
       System.Console.WriteLine( managementObjectSub["__Class"] ) ;
      }//if ( managementObjectSub["__SuperClass"] == null )
      else
      {
       System.Console.WriteLine( "\t" + managementObjectSub["__Class"] );
      }
     }//foreach( ManagementObject managementObjectSub in managementObjectCollection )
    }//foreach ( ManagementObject managementObject in managementClass.GetInstances() )
   }//try
   catch( System.Exception exception )
   {
    exceptionMessage = "System.Exception" + exception.Message;
   }
   #if ( DEBUG )
    if ( httpContext == null )
    {
     System.Console.WriteLine( exceptionMessage );
    }//if ( httpContext == null )
    else
    {
     httpContext.Response.Write( exceptionMessage );
    }//else if ( httpContext == null )
   #endif
 
  }//public static void LocalRootNamespacesClasses()
        private static EventSchema GetMofFromWbem(ManagementClass parent, EventKey eventKey)
        {
            if (parent == null)
            {
                return(null);
            }
            EventSchema eventSchema = null;

            foreach (ManagementClass subclass in parent.GetSubclasses())
            {
                if (MatchEventType(subclass, eventKey.Type))
                {
                    eventSchema = new EventSchema();
                    eventSchema.ManagementClass = subclass;
                    eventSchema.WmiDataTypes    = GetMofTypes(subclass);
                    mofCollection.Add(eventKey, eventSchema);
                }
                else
                {
                    eventSchema = GetMofFromWbem(subclass, eventKey);
                }
                if (eventSchema != null)
                {
                    return(eventSchema);
                }
            }
            return(eventSchema);
        }
 private static void FindGuid(ManagementClass managementClass)
 {
     QualifierDataCollection.QualifierDataEnumerator enumerator = managementClass.Qualifiers.GetEnumerator();
     try
     {
         while (enumerator.MoveNext())
         {
             QualifierData current = enumerator.Current;
             if (current.Name.Equals("Guid", StringComparison.Ordinal))
             {
                 Guid key = new Guid((string)current.Value);
                 if (GuidLookupTable.ContainsKey(key))
                 {
                     if (!managementClass.ClassPath.ToString().EndsWith("_V0", StringComparison.OrdinalIgnoreCase))
                     {
                         GuidLookupTable[key] = managementClass;
                     }
                 }
                 else
                 {
                     GuidLookupTable.Add(key, managementClass);
                 }
             }
         }
     }
     finally
     {
         (enumerator as IDisposable)?.Dispose();
     }
     foreach (ManagementClass subclass in managementClass.GetSubclasses())
     {
         FindGuid(subclass);
     }
 }
        /// <summary>
        /// Get List of classes
        /// </summary>
        /// <returns></returns>
        public ModelWMIClasses GetListOfClasses()
        {
            ModelWMIClasses objData = new ModelWMIClasses();

            ManagementClass wmiclass = new ManagementClass(this.MgmntScope.Path);

            //Provides a base class for query and enumeration-related options objects
            EnumerationOptions options = new EnumerationOptions();

            //Return class members that are immediately related to the class
            options.EnumerateDeep = false;

            //Retrieve the  sbuclasses using the specified options
            foreach (ManagementObject mgmtObj in wmiclass.GetSubclasses(options))
            {
                ModelWMIClass objClass = new ModelWMIClass();
                objClass.ClassName = mgmtObj.ClassPath.ClassName;

                foreach (PropertyData prop in mgmtObj.Properties)
                {
                    ModelWMIProperty objProp = new ModelWMIProperty();
                    objProp.Name    = prop.Name;
                    objProp.CimType = prop.Type;

                    objClass.Properties.Add(objProp);
                }
            }

            return(objData);
        }
Example #7
0
        private static void AddClassNames(ManagementClass manClass, IList list)
        {
            var className = manClass.ClassPath.ClassName;

            list.Add(className);

            var objects = manClass.GetSubclasses();

            foreach (ManagementClass subClass in objects)
            {
                AddClassNames(subClass, list);
            }
        }
Example #8
0
        public IEnumerable <ITreeNode> GetChildren(bool refresh)
        {
            var manClass = new ManagementClass(_scope.Path);
            var objects  = manClass.GetSubclasses();
            var list     = new List <ITreeNode>();

            foreach (ManagementClass subClass in objects)
            {
                ITreeNode treeNode = new WmiClass(subClass);
                list.Add(treeNode);
            }

            return(list.OrderBy(n => n.Name));
        }
Example #9
0
        public static int Main(string[] args)
        {
            ManagementClass process = new ManagementClass("cim_process");

            foreach (ManagementClass processSubClass in process.GetSubclasses())
            {
                Console.WriteLine("Name of subclass is " + processSubClass.ClassPath);
            }

            foreach (ManagementObject processInstance in process.GetInstances())
            {
                Console.WriteLine("Name of instance is " + processInstance.Path.RelativePath);
            }
            return(0);
        }
    public static void Main(string[] args)
    {
        ManagementClass c = new ManagementClass("Win32_PerfRawData");

        foreach (ManagementClass mc in c.GetSubclasses())
        {
            Console.WriteLine("Class: {0}", mc["__CLASS"]);
            foreach (PropertyData pd in mc.Properties)
            {
                try {
                    PerfCounterType ct = (PerfCounterType)ulong.Parse(
                        mc.GetPropertyQualifierValue(pd.Name, "CounterType").ToString());
                    Console.WriteLine("   {0} : {1}", pd.Name, ct);
                } catch (Exception e) {}
            }
            Console.WriteLine();
        }
    }
Example #11
0
        /// <summary>
        /// Targets the specified namespace on a specified computer, and scavenges it for all classes, if the bool is set to true. If false, it is used to setup the ManagementPath which
        /// consists of the specified system and specified namespace
        /// </summary>
        /// <param name="pNamespace"></param>
        /// <param name="pHostName"></param>
        public WmiInformationGatherer(string pNamespace, string pHostName, bool pScavenge)
        {
            mRemoteWmiPath = new ManagementPath(@"\\" + pHostName + @"\root\" + pNamespace);

            if (pScavenge)
            {
                try
                {
                    ManagementClass    managementClass = new ManagementClass(mRemoteWmiPath);
                    EnumerationOptions scavengeOptions = new EnumerationOptions();
                    scavengeOptions.EnumerateDeep = false;
                    WmiResults = new WmiResult(pHostName);
                    WmiResults.PopulateClassesList(managementClass.GetSubclasses());
                }
                catch (Exception e)
                {
                    WmiResults.WmiError = e;
                }
            }
        }
Example #12
0
        /// <summary>
        /// Returns true if classObj has non-abstract subclasses (with deep enumeration)
        /// </summary>
        /// <param name="classObj"> </param>
        static public bool HasNonAbstractChildren(ManagementClass classObj)
        {
            GetSubclassesOptions opts = new GetSubclassesOptions(null,                          //context
                                                                 TimeSpan.MaxValue,             //timeout
                                                                 50,                            //block size
                                                                 false,                         //rewindable
                                                                 true,                          //return immediately
                                                                 false,                         //amended
                                                                 true);                         //deep

            ManagementObjectCollection subClasses = classObj.GetSubclasses(opts);

            ManagementObjectCollection.ManagementObjectEnumerator childEnum = subClasses.GetEnumerator();

            while (childEnum.MoveNext())
            {
                ManagementClass curChild = (ManagementClass)childEnum.Current;
                if (!WmiHelper.IsAbstract(curChild))
                {
                    return(true);
                }
            }
            return(false);
        }