/// <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; } } }
/// <summary> /// Asynchronously refreshes the class list cache for the currently connected WMI Namespace. /// </summary> private void RefreshClassListAsync() { this.Text = String.Format("{0}{1}", WINDOW_TITLE_PREFIX, this.CurrentNamespacePath); classListItems.Clear(); this.listViewClasses.Items.Clear(); this.Log(LogLevel.Information, String.Format("Loading classes for namespace: {0}", this.CurrentNamespacePath)); var path = new ManagementPath(this.CurrentNamespacePath); var ns = new ManagementClass(this.CurrentNamespaceScope, path, nsObjGetOpts); try { ns.GetSubclasses(classListObserver, classListEnumOpts); this.Log(LogLevel.Success, "Finished loading classes."); } catch (ManagementException e) { var msg = String.Format("An error occurred listing classes in {0}:\r\n\r\n{1}", this.CurrentNamespacePath, e.Message); this.Log(LogLevel.Critical, msg); } }