http://dieseyer.de • all rights reserved • © 2011 v11.4

'*** 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 )

http://dieseyer.de • all rights reserved • © 2011 v11.4