'*** v13.1 *** www.dieseyer.de ****************************** ' ' File: exec-hidden-plus.vbs ' Autor: dieseyer@gmx.de ' dieseyer.de ' ' Die ExecHiddenPlus-Function ruft ein weiteres Skript (das ' notfals neu geschrieben wird) auf, welches die Ausgaben ' von Befehlszeilen-Programme (mit DOS-Box) sammelt ' '*********************************************************** Option Explicit ' zum Test die nächsten drei Zeilen frei geben ' Dim Tmp ' Tmp = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%Temp%") & "\" & "ExecHiddenPlus.VBS" ' WScript.CreateObject("Scripting.FileSystemObject").DeleteFile( Tmp ) MsgBox ExecHiddenPlus ( "%comspec% /c ipconfig /all" ), , "20 :: " & WScript.ScriptName MsgBox ExecHiddenPlus ( "%comspec% /c Ping 127.0.0.1 -n 1" ), , "21 :: " & WScript.ScriptName WScript.Quit '*** v14.1 *** www.dieseyer.de ****************************** Function ExecHiddenPlus( CMD ) '*********************************************************** Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim FileOut, oWsh, Tmp, Txt, Ergebn, errTst Randomize Ergebn = fso.GetTempName Randomize Ergebn = Ergebn & Right( "0000" & Int( (1000 * Rnd) + 1), 4 ) Ergebn = Replace( Ergebn, ".", "" ) ' MsgBox ">" & Ergebn & "<", , "2950 :: " Tmp = WScript.CreateObject("WScript.Shell").ExpandEnvironmentStrings("%Temp%") & "\ExecHiddenPlus_" & Ergebn & ".VBS" ' MsgBox Tmp & vbCRLF & Ergebn, , "2953 :: " ' : WScript.Quit ' If fso.FileExists( Tmp ) Then fso.DeleteFile Tmp ' zum Test nächste Zeile frei geben ' MsgBox Tmp & vbCRLF & "F E H L T", , "2958 :: " Txt = "' Von " & WScript.ScriptFullName & " erstellt am " & Now() Txt = Txt & vbCRLF & "set oArgs = Wscript.Arguments" Txt = Txt & vbCRLF & "For i = 0 to oArgs.Count - 1" ' zum Test nächste Zeile frei geben ' Txt = Txt & vbCRLF & "MsgBox oArgs.item(i) , , WScript.ScriptName & "" - oArgs """ Txt = Txt & vbCRLF & " if Instr( oArgs.item(i), "" "" ) > 0 Then CMD = CMD & """""""" & oArgs.item(i) & """""""" & "" """ Txt = Txt & vbCRLF & " if not Instr( oArgs.item(i), "" "" ) > 0 Then CMD = CMD & oArgs.item(i) & "" """ Txt = Txt & vbCRLF & "Next" ' zum Test nächste Zeile frei geben ' Txt = Txt & vbCRLF & "MsgBox CMD , , WScript.ScriptName & "" Anfang """ Txt = Txt & vbCRLF & "Set oExec = WScript.CreateObject(""WScript.Shell"").Exec( CMD )" Txt = Txt & vbCRLF & "Do Until oExec.status : WScript.Sleep 100 : Loop" Txt = Txt & vbCRLF & "WScript.CreateObject(""WScript.Shell"").Environment( ""volatile"" )( """ & Ergebn & """ ) = oExec.StdOut.ReadAll()" ' zum Test nächste Zeile frei geben ' Txt = Txt & vbCRLF & "MsgBox WScript.CreateObject(""WScript.Shell"").Environment( ""volatile"" )( """ & Ergebn & """ ), , WScript.ScriptName & "" Ende """ ' zum Test nächste Zeile frei geben ' MsgBox Tmp & vbCRLF & vbCRLF & Txt, 4096, "2982 :: " On Error Resume Next fso.OpenTextFile( Tmp , 2, true).WriteLine( Txt ) errTst = err.Number & " - " & err.Description On Error GoTo 0 If Len( errTst ) > 4 Then WScript.Sleep 333 On Error Resume Next fso.OpenTextFile( Tmp , 2, true).WriteLine( Txt ) errTst = err.Number & " - " & err.Description On Error GoTo 0 If Len( errTst ) > 4 Then WScript.Sleep 333 On Error Resume Next fso.OpenTextFile( Tmp , 2, true).WriteLine( Txt ) errTst = err.Number & " - " & err.Description On Error GoTo 0 ' If Len( errTst ) > 4 Then MsgBox Tmp & vbCRLF & vbCRLF & Txt, , "3000 :: " If Len( errTst ) > 4 Then ExecHiddenPlus = "Fehler: Prozeduraufruf ExecHiddenPlus( " & CMD & ")!" : Exit Function Set oWsh = WScript.CreateObject("WScript.Shell") oWsh.Run "CScript.exe //NOLOGO " & Tmp & " " & CMD , 0, true ExecHiddenPlus = oWsh.Environment("volatile")( Ergebn ) oWsh.Environment("volatile").Remove Ergebn Set oWsh = nothing If fso.FileExists( Tmp ) Then fso.DeleteFile Tmp End Function ' ExecHiddenPlus( CMD )