/// <summary> /// Send a stop command to a Service and wait until the Service is stopped /// </summary> /// <param name="ServiceName"></param> /// <returns>Returns an ArrayList of Services which has stopped because of service dependencies </returns> public ArrayList StopService(string ServiceName) { try { ManagementObjectCollection Dependencies; ManagementObject Service; WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\cimv2"; oProv.mScope.Options.EnablePrivileges = true; Service = oProv.GetObject("Win32_Service.Name='" + ServiceName + "'"); Dependencies = oProv.ExecuteQuery("Associators of {Win32_Service.Name='" + ServiceName + "'} Where AssocClass=Win32_DependentService Role=Antecedent"); ArrayList Result = new ArrayList(); foreach (ManagementObject MO in Dependencies) { if (MO.GetPropertyValue("State").ToString().ToLower() == "running") { Result.AddRange(StopService(MO.GetPropertyValue("Name").ToString())); } } Result.Add(ServiceName); bStopService(Service); return(Result); } catch (Exception ex) { throw (ex); } }
/// <summary> /// Get an ArrayList of all Subfolders /// </summary> /// <param name="Path"></param> /// <returns></returns> public ArrayList SubFolders(string Path) { lock (oWMIProvider) { ArrayList result = new ArrayList(); try { WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\cimv2"; ManagementObjectCollection MOC = oProv.ExecuteQuery(@"Associators of {Win32_Directory.Name='" + Path + @"'} where AssocClass=Win32_Subdirectory ResultRole=PartComponent"); foreach (ManagementObject MO in MOC) { try { result.Add(MO.GetPropertyValue("Name").ToString().ToLower()); } catch { } } return(result); } catch { } return(result); } }
/// <summary> /// Delete a Folder with all Subfolders and Files /// </summary> /// <param name="Path"></param> public void DeleteFolder(string Path) { if (!string.IsNullOrEmpty(Path)) { try { ManagementObjectCollection MOC; //Delete all Subfolders foreach (string sSub in SubFolders(Path)) { DeleteFolder(sSub); } WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\cimv2"; string FolderPath = Path.Replace(@"\", @"\\"); //ManagementObjectCollection MOC = oWMIProvider.ExecuteQuery("SELECT * FROM Win32_Directory WHERE Drive like '" + (FolderPath.Split('\\'))[0] + "' and Path like '" + (CachePath.Split(':'))[1] + @"\\' and FileType = 'File Folder'"); MOC = oProv.ExecuteQuery("SELECT * FROM Win32_Directory WHERE Name = '" + FolderPath + "'"); //Delete the root Folder foreach (ManagementObject MO in MOC) { try { ManagementBaseObject inParams = MO.GetMethodParameters("DeleteEx"); ManagementBaseObject result = MO.InvokeMethod("DeleteEx", inParams, null); } catch { } } } catch { } } }
/// <summary> /// local CCM_ComponentClientConfig policy from requested policy /// </summary> /// <param name="ComponentName"></param> /// <returns>ROOT\ccm\Policy\Machine\RequestedConfig:CCM_ComponentClientConfig</returns> public ManagementObjectCollection Component_Requested(string ComponentName) { WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"ROOT\ccm\Policy\Machine\RequestedConfig"; return(oProv.ExecuteQuery("SELECT * FROM CCM_ComponentClientConfig WHERE ComponentName = '" + ComponentName + "'")); }
/// <summary> /// Delete multiple Files /// </summary> /// <param name="Drive">Disk Drive like 'c:'</param> /// <param name="Path">Path like '\\windows\\'</param> /// <param name="Filename">Filename like 'kb%'</param> /// <param name="Extension">Extension like 'log'</param> public void DeleteFiles(string Drive, string Path, string Filename, string Extension) { try { ManagementObjectCollection MOC; if (!Path.EndsWith(@"\")) { Path = Path + @"\"; } WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\cimv2"; string FolderPath = Path.Replace(@"\", @"\\"); //ManagementObjectCollection MOC = oWMIProvider.ExecuteQuery("SELECT * FROM Win32_Directory WHERE Drive like '" + (FolderPath.Split('\\'))[0] + "' and Path like '" + (CachePath.Split(':'))[1] + @"\\' and FileType = 'File Folder'"); MOC = oProv.ExecuteQuery(string.Format("SELECT * FROM CIM_DataFile WHERE Drive = '{0}' and Path = '{1}' and Filename like '{2}' and Extension like '{3}'", new object[] { Drive, FolderPath, Filename, Extension })); //Delete the root Folder foreach (ManagementObject MO in MOC) { try { ManagementBaseObject inParams = MO.GetMethodParameters("Delete"); ManagementBaseObject result = MO.InvokeMethod("Delete", inParams, null); } catch { } } } catch { } }
/// <summary> /// CCM_ComponentClientConfig from actual policy /// </summary> /// <param name="ComponentName"></param> /// <returns>ROOT\ccm\Policy\Machine\ActualConfig:CCM_ComponentClientConfig</returns> public ManagementObject Component_Actual(string ComponentName) { WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"ROOT\ccm\Policy\Machine\ActualConfig"; ManagementObjectCollection MOC = oProv.ExecuteQuery("SELECT * FROM CCM_ComponentClientConfig WHERE ComponentName = '" + ComponentName + "'"); foreach (ManagementObject MO in MOC) { return(MO); } return(null); }
/// <summary> /// Delete all instances from a Query Result /// </summary> /// <param name="sNamespace"></param> /// <param name="sQuery"></param> public void DeleteQueryResults(string sNamespace, string sQuery) { try { WMIProvider oProv = new WMIProvider(this.mscope.Clone()); oProv.mScope.Path.NamespacePath = sNamespace; ManagementObjectCollection oResults = oProv.ExecuteQuery(sQuery); foreach (ManagementObject oInst in oResults) { oInst.Delete(); } } catch { } }
/// <summary> /// Get DCM Baselines (Class SMS_DesiredConfiguration) /// </summary> /// <returns>Class SMS_DesiredConfiguration</returns> public ManagementObjectCollection CCM_DCMBaselines() { if (oDCMBaselines == null) { WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\ccm\dcm"; ManagementObjectCollection MOC = oProv.ExecuteQuery("SELECT * FROM SMS_DesiredConfiguration"); oDCMBaselines = MOC; return(MOC); } else { return(oDCMBaselines); } }
/// <summary> /// Uninstall a Windows Installer Package based on the MSI-ID /// </summary> /// <param name="MSIID"></param> /// <returns>MSI Exit Code or 99 if MSIID was not found</returns> public UInt32 UninstallMSI_ID(string MSIID) { ManagementObjectCollection CliAgents; WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\cimv2"; CliAgents = oProv.ExecuteQuery("SELECT * FROM Win32_Product WHERE IdentifyingNumber ='" + MSIID + "'"); foreach (ManagementObject CliAgent in CliAgents) { ManagementBaseObject inParams = CliAgent.GetMethodParameters("Uninstall"); ManagementBaseObject result = CliAgent.InvokeMethod("Uninstall", inParams, null); return(UInt32.Parse(result.GetPropertyValue("ReturnValue").ToString())); } return(99); }
/// <summary> /// Kill a process by ProcessName /// </summary> /// <param name="ProcessName"></param> /// <returns></returns> public int KillProcess(string ProcessName) { ManagementObjectCollection MOC; int Res = 0; WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\cimv2"; oProv.mScope.Options.EnablePrivileges = true; MOC = oProv.ExecuteQuery("SELECT * FROM Win32_Process WHERE Name='" + ProcessName + "'"); foreach (ManagementObject MO in MOC) { ManagementBaseObject inParams = MO.GetMethodParameters("Terminate"); Res = int.Parse((MO.InvokeMethod("Terminate", inParams, null)).GetPropertyValue("ReturnValue").ToString()); } return(Res); }
/// <summary> /// Check if Directory Exists /// </summary> /// <param name="Path"></param> /// <returns>True = Directory exists</returns> public Boolean DirExist(string Path) { if (!string.IsNullOrEmpty(Path)) { try { WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); string FolderPath = Path.Replace(@"\", @"\\"); ManagementObjectCollection MOC = oProv.ExecuteQuery("SELECT * FROM Win32_Directory WHERE Name = '" + FolderPath + "'"); foreach (ManagementObject MO in MOC) { return(true); } } catch { } } return(false); }
/// <summary> /// Check if File Exists /// </summary> /// <param name="FilePath"></param> /// <returns>True = File exists</returns> public Boolean FileExist(string FilePath) { if (!string.IsNullOrEmpty(FilePath)) { try { WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); FilePath = FilePath.Replace(@"\", @"\\"); ManagementObjectCollection MOC = oProv.ExecuteQuery("SELECT * FROM CIM_Datafile WHERE Name = '" + FilePath + "'"); foreach (ManagementObject MO in MOC) { return(true); } } catch { } } return(false); }
/// <summary> /// The cached CCM_SoftwareDistributionClientConfig Class. /// </summary> /// <returns>root\ccm\policy\machine\requestedconfig:CCM_SoftwareDistributionClientConfig</returns> /// <seealso cref="M:smsclictr.automation.SMSComponents.CCM_SoftwareDistributionClientConfig(System.Boolean)"/> public ManagementObject CCM_SoftwareDistributionClientConfig() { if (oCCM_SoftwareDistributionClientConfig == null) { WMIProvider oProv = new WMIProvider(oWMIProvider.mScope.Clone()); oProv.mScope.Path.NamespacePath = @"root\ccm\policy\machine\requestedconfig"; ManagementObjectCollection MOC = oProv.ExecuteQuery("SELECT * FROM CCM_SoftwareDistributionClientConfig"); foreach (ManagementObject MO in MOC) { oCCM_SoftwareDistributionClientConfig = MO; return(MO); } return(null); } else { return(oCCM_SoftwareDistributionClientConfig); } }