Dim strComputer, objWMIService, colListOfServices, objService Dim ListeServices, TableauServices, ParseCaracter, UnService, NomService Dim WSHShell Dim vAPPDATA, vSystemDrive, vSystemRoot, vSESSIONNAME, vCOMPUTERNAME, vProgramFilesx32, vProgramFilesx64 Dim CheminScriptActuel, objFSO, objFichierLog, objFichierResultat Const ForReading = 1 Const ForWritting = 2 Const ForAppending = 8 Call DetectExeType() ListeServices = "dmserver;NMSSvc;NWCWorkstation" Set WSHShell = CreateObject("WScript.Shell") vAPPDATA = WSHShell.ExpandEnvironmentStrings("%APPDATA%") vSystemDrive = WSHShell.ExpandEnvironmentStrings("%SystemDrive%") 'Retourne C: en général (sans le \ à la fin) vSystemRoot = WSHShell.ExpandEnvironmentStrings("%systemroot%") vSESSIONNAME = WSHShell.ExpandEnvironmentStrings("%SESSIONNAME%") vCOMPUTERNAME = WSHShell.ExpandEnvironmentStrings("%COMPUTERNAME%") vProgramFilesx32 = WSHShell.ExpandEnvironmentStrings("%programfiles(x86)%") vProgramFilesx64 = WSHShell.ExpandEnvironmentStrings("%programfiles%") If Left(vProgramFilesx32,1) = "%" Then 'Si on est sur un système 32bits, alors le chemin du répertoire Program Files est dans vProgramFilesx64 et non vProgramFilesx32. 'Du coup on recopie l'un dans l'autre et on efface la variable vProgramFilesx64 vProgramFilesx32 = vProgramFilesx64 vProgramFilesx64 = "" End If Set objFSO = CreateObject("Scripting.FileSystemObject") CheminScriptActuel = Left(wscript.scriptfullname,Len(wscript.scriptfullname)-Len(wscript.scriptname)-1) CheminFichierdeLog = CheminScriptActuel & "\" & wscript.scriptname & "_" & vCOMPUTERNAME & "_Log.txt" CheminFichierResultat = CheminScriptActuel & "\" & wscript.scriptname & "_" & vCOMPUTERNAME & "_Resultat.txt" Wscript.Echo "Fichier de log dans " & CheminFichierdeLog Wscript.Echo "Fichier avec les résultats dans " & CheminFichierResultat Set objFichierLog = objFSO.OpenTextFile(CheminFichierdeLog, ForWritting, True) Set objFichierResultat = objFSO.OpenTextFile(CheminFichierResultat, ForWritting, True) ParseCaracter = ";" TableauServices = Split(ListeServices, ParseCaracter) strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service") '("Select * from Win32_Service WHERE Name LIKE 'myservicenamelike%'") 'objService.Description objFichierLog.WriteLine("Services présent sur la machine :") For Each objService in colListOfServices objFichierLog.WriteLine("Service : " & objService.Name & VbTab & objService.State) NomService = objService.Name NomService = Lcase(Trim(NomService)) For Each UnService In TableauServices 'objFichierLog.WriteLine("Recherche de " & UnService) If (NomService = Lcase(Trim(UnService))) Then objFichierResultat.WriteLine(vCOMPUTERNAME & VbTab & NomService & VbTab & objService.DisplayName & VbTab & objService.StartMode & VbTab & objService.State & VbTab & objService.PathName & VbTab & "Service trouvé alors qu'il ne devrait pas") objFichierLog.WriteLine(UnService & " a été trouvé alors qu'il ne devrait pas.") exit for End If Next Next objFichierLog.Close 'Fermeture du fichier objFichierResultat.Close 'Fermeture du fichier Set objFichierLog = Nothing Set objFichierResultat = Nothing Set objFSO = Nothing Set WSHShell = Nothing Wscript.Echo "Terminé" Sub DetectExeType() 'Version du 10 juillet 2008 Dim ScriptHost Dim ShellObject Dim CurrentPathExt Dim EnvObject Dim RegCScript Dim RegPopupType ' This is used to set the pop-up box flags. ' I couldn't find the pre-defined names RegPopupType = 32 + 4 On Error Resume Next ScriptHost = WScript.FullName ScriptHost = Right(ScriptHost, Len(ScriptHost) - InStrRev(ScriptHost, "\")) If (UCase(ScriptHost) = "WSCRIPT.EXE") Then WScript.Echo ("This script does not work with WScript.") ' Create a pop-up box and ask if they want to register cscript as the default host. Set ShellObject = WScript.CreateObject("WScript.Shell") ' -1 is the time to wait. 0 means wait forever. RegCScript = ShellObject.PopUp("Would you like to register CScript as your default host for VBscript?", 0, "Register CScript", RegPopupType) If (Err.Number <> 0) Then ReportError () WScript.Echo "To run this script using CScript, type: ""CScript.exe " & WScript.ScriptName & """" WScript.Quit (GENERAL_FAILURE) WScript.Quit (Err.Number) End If ' Check to see if the user pressed yes or no. Yes is 6, no is 7 If (RegCScript = 6) Then ShellObject.RegWrite "HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command\", "%WINDIR%\System32\CScript.exe //nologo ""%1"" %*", "REG_EXPAND_SZ" ShellObject.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\VBSFile\Shell\Open\Command\", "%WINDIR%\System32\CScript.exe //nologo ""%1"" %*", "REG_EXPAND_SZ" ' Check if PathExt already existed CurrentPathExt = ShellObject.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATHEXT") If Err.Number = &H80070002 Then Err.Clear Set EnvObject = ShellObject.Environment("PROCESS") CurrentPathExt = EnvObject.Item("PATHEXT") End If ShellObject.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PATHEXT", CurrentPathExt & ";.VBS", "REG_SZ" If (Err.Number <> 0) Then ReportError () WScript.Echo "Error Trying to write the registry settings!" WScript.Quit (Err.Number) Else WScript.Echo "Successfully registered CScript" End If Else WScript.Echo "To run this script type: ""CScript.Exe adsutil.vbs """ End If Dim ProcString Dim ArgIndex Dim ArgObj Dim Result ProcString = "Cscript //nologo " & WScript.ScriptFullName Set ArgObj = WScript.Arguments For ArgIndex = 0 To ArgCount - 1 ProcString = ProcString & " " & Args(ArgIndex) Next 'Now, run the original executable under CScript.exe Result = ShellObject.Run(ProcString, 0, True) WScript.Quit (Result) End If End Sub