'*** v9.6 *** www.dieseyer.de ****************************** Set Fso = WScript.CreateObject ("Scripting.FileSystemObject") Set Wss = WScript.CreateObject ( "WScript.Shell" ) ' ' Datei: autostart.vbs ' Autor: dieseyer@gmx.de ' Auf: www.dieseyer.de ' ' Die Prozedur ' AutoStart( PC ) ' gibt ein Array zurück, in dem alle Autostarteinträge ' gelistet sind. Jedes Array-Element enthält folgende, ' durch Tabulator getrennte Informationen: ' Command Befehl, .exe ' Description Beschreibung, Name ' Location z.B. Eintrag im AutoStart-Ordner ' oder Registry-Schlüssel ' Name häufig identisch mit Description ' User z.B. 'All Users', '.DEFAULT' ' 'NT-AUTORITÄT\SYSTEM' ' '*********************************************************** Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl Dim ZwArray : ZwArray = AutoStart( "." ) MsgBox "Es gibt " & UBound( ZwArray ) + 1 & " Autostart-Einträge.", , "025 :: " & WScript.ScriptName Call ArrayZeigen( ZwArray ) WScript.Quit '*** v9.6 *** www.dieseyer.de ****************************** Function AutoStart( PC ) '*********************************************************** ' Hey, Scripting Guy! ' How Can I List All the Items in the Run Key in the Registry? ' http://www.microsoft.com/technet/scriptcenter/resources/qanda/feb06/hey0220.mspx Dim objWMIService : Set objWMIService = GetObject("winmgmts:\\" & PC & "\root\cimv2") Dim colStartupCommands : Set colStartupCommands = objWMIService.ExecQuery("Select * from Win32_StartupCommand") Dim t, i i = 0 t = "Nr." & vbTab & ".Command" & vbTab & ".Description" & vbTab & "Location" & vbTab & ".Name" & vbTab & ".User" & vbCRLF Dim objStartupCommand For Each objStartupCommand in colStartupCommands t = t & i + 1 & vbTab & objStartupCommand.Command & vbTab & objStartupCommand.Description & vbTab & objStartupCommand.Location & vbTab & objStartupCommand.Name & vbTab & objStartupCommand.User & vbCRLF ReDim Preserve AutoStartListe(i) AutoStartListe(i) = objStartupCommand.Command & vbTab & objStartupCommand.Description & vbTab & objStartupCommand.Location & vbTab & objStartupCommand.Name & vbTab & objStartupCommand.User i = i + 1 ' Wscript.Echo "Command: " & objStartupCommand.Command ' Wscript.Echo "Description: " & objStartupCommand.Description ' Wscript.Echo "Location: " & objStartupCommand.Location ' Wscript.Echo "Name: " & objStartupCommand.Name ' Wscript.Echo "User: " & objStartupCommand.User Next ' ArrayZeigen( AutoStartListe ) ' MsgBox t, , "060 :: " & WScript.ScriptName ' WScript.CreateObject("Scripting.FileSystemObject").OpenTextFile( WScript.ScriptFullName & ".csv", 2, true ).WriteLine ( t ) AutoStart = AutoStartListe End Function ' AutoStart() '*** v7.C *** www.dieseyer.de ****************************** Function ArrayZeigen( InArray ) '*********************************************************** ' Durch die Prozedur ' ArrayZeigen( InArray ) ' werden von einem Array nur die ersten ' und letzten Elemente angezeigt. Da die MsgBox nur 1024 ' Zeichen anzeigen kann, ist die Anzahl der angezeigten ' Elemente von der Länge der einzelnen Elemente abhängig. Dim TxtOben, TxtUnten, Tst, i, n, o, u Dim Kopf ' für Tests ' Kopf = "LBound( InArray )=" & LBound( InArray ) & " UBound( InArray )=" & UBound( InArray ) & vbCRLF & vbCRLF & Kopf ' Kopf = "O=00000" & " U=00000" & " Len( TxtOben )=00000" & vbCRLF & Kopf For i = LBound( InArray ) to UBound( InArray ) n = UBound( InArray ) - i Tst = Len( TxtOben ) + Len( TxtUnten ) + Len( InArray( i ) ) + Len( Kopf ) If Tst < 1000 AND n >= i Then ' TxtOben = TxtOben & "i = " & i & vbTab & "n = " & n & vbTab & Tst & vbTab & InArray( i ) & vbCRLF TxtOben = TxtOben & i & vbTab & InArray( i ) & vbCRLF o = i End If n = UBound( InArray ) - i Tst = Len( TxtOben ) + Len( TxtUnten ) + Len( InArray( n ) ) Tst = Len( TxtOben ) + Len( TxtUnten ) + Len( InArray( i ) ) + Len( Kopf ) If Tst < 1000 AND n > i Then ' TxtUnten = "n = " & n & vbTab & "i = " & i & vbTab & Tst & vbTab & InArray( n ) & vbCRLF & TxtUnten TxtUnten = n & vbTab & InArray( n ) & vbCRLF & TxtUnten u = n End If If n <=i then Exit For Next Tst = "" If o <> u AND o + 1 <> u Then Tst = "." & vbCRLF & "." & vbCRLF Kopf = Replace( Kopf, "O=00000", "O=" & o ) Kopf = Replace( Kopf, "U=00000", "U=" & u ) Kopf = Replace( Kopf, ")=00000", ")=" & Len( Kopf & TxtOben & Tst & TxtUnten ) ) TxtOben = Kopf & TxtOben & Tst & TxtUnten ' LogEintrag "114 :: " & vbCRLF & TxtOben MsgBox TxtOben , , "115 :: " & WScript.ScriptName End Function ' ArrayZeigen( InArray )