Autostart Control mit RegRead HILFE?!

  • Halllo also ich brauche Hilfe bei einem Prog das den Autostart checken soll und villt auch noch ändern kann aber
    egal ich wollte nur wissen was wenn man mit RegRead() arbeitet hier hin kommt

    [autoit]


    $var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",Was soll HIER hin)
    MsgBox(4096, "Program files im Autostart:", $var)

    [/autoit]


    lg Sido47

  • Ja ok aber durch diese Methode muss man den Name von den Prog wissen und man bekommt blos den Pfad angezeigt

    was ich wollte ist den Ordner auszulsen welche dateien im autostart sind

  • vllt hilft dir das weiter? RegEnumKey ( "keyname", instance )

    bsp. aus der hilfe:

    [autoit]

    For $i= 1 to 10
    $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE", $i)
    If @error <> 0 then ExitLoop
    MsgBox(4096, "Unterschlüssel #" & $i & " unter HKLM\Software: ", $var)
    Next

    [/autoit]

    dann könntest du mit RegRead() den enstrechenden Wert herausbekomen.

    EDIT: Sorrry geht so natürlich nicht :pinch:

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

    Einmal editiert, zuletzt von Darter (12. Juni 2010 um 11:02)

  • Es hilft villt ein Stück aber ich kenn mich mit Reg Befhelen von Autoit ned so aus

    [autoit]


    For $i= 1 to 2
    $var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", $i)
    MsgBox(4096, "Program files are in:", $var)
    Next

    [/autoit]

    Wenn ich des jetzt mach dann kommen halt 2 Msgboxen und in einer steht OptionalCoponents und in der anderen Keine Dateien mehr verfügbar
    wenn man $i = 1 to 3 macht dann sinds halt 3 Msgboxen und in einer steht.....und in 2 Keine dateien mehr verfügbar usw

    Also es wird wieder blos der Unterordner OptionalCoponents(......Run\OptionalCoponents\) angezeigt aber nicht die Einträge gleich im Run

    Einmal editiert, zuletzt von sido47 (12. Juni 2010 um 11:12)

    • Offizieller Beitrag

    Also erstmal: Es gibt mehrere Stellen in der Registry, in der man einen Autostart unterbringen kann. Außerdem gibt es auch noch @StartupDir, in das man das Programm bzw. den Link kopieren kann, um es automatisch starten zu lassen.
    Um alle die wichtigsten Stellen "abzugrasen" habe ich mal ein kleines Skript erstellt:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <File.au3>
    Global $aAutostart[1][3]
    _AddAutostartKeyToArray($aAutostart, 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run')
    _AddAutostartKeyToArray($aAutostart, 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce')
    _AddAutostartKeyToArray($aAutostart, 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices')
    _AddAutostartKeyToArray($aAutostart, 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce')
    _AddAutostartKeyToArray($aAutostart, 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run')
    _AddAutostartKeyToArray($aAutostart, 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce')
    _AddAutostartKeyToArray($aAutostart, 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices')
    _AddAutostartKeyToArray($aAutostart, 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce')
    $aStartupFiles = _FileListToArray(@StartupDir, '*', 1)
    If IsArray($aStartupFiles) Then
    For $i = 1 To $aStartupFiles[0]
    $aAutostart[UBound($aAutostart) - 1][0] = @StartupDir
    $aAutostart[UBound($aAutostart) - 1][1] = $aStartupFiles[$i]
    $aAutostart[UBound($aAutostart) - 1][2] = $aStartupFiles[$i]
    If StringRight($aStartupFiles[$i], 3) = 'lnk' Then
    $aShortcut = FileGetShortcut(@StartupDir & '\' & $aStartupFiles[$i])
    If Not @error Then $aAutostart[UBound($aAutostart) - 1][2] = $aShortcut[0]
    EndIf
    ReDim $aAutostart[UBound($aAutostart) + 1][3]
    Next
    EndIf
    ReDim $aAutostart[UBound($aAutostart) - 1][3]
    _ArrayDisplay($aAutostart)

    [/autoit] [autoit][/autoit] [autoit]

    Func _AddAutostartKeyToArray(ByRef $aAutostart, $sRegKey)
    Local $iInstance = 1, $sValName
    Do
    $sValName = RegEnumVal($sRegKey, $iInstance)
    If Not @error Then
    $aAutostart[UBound($aAutostart) - 1][0] = $sRegKey
    $aAutostart[UBound($aAutostart) - 1][1] = $sValName
    $aAutostart[UBound($aAutostart) - 1][2] = RegRead($sRegKey, $sValName)
    ReDim $aAutostart[UBound($aAutostart) + 1][3]
    EndIf
    $iInstance += 1
    Until $sValName = ''
    EndFunc

    [/autoit]

    Edit: AspirinJunkie hat mir gerade einen Link geschickt zu den weiteren Möglichkeiten eines Autostarts. Mein Skript zeigt also nur einen Bruchteil der Möglichkeiten. :rolleyes:
    Danke an AspirinJunkie! :thumbup:

  • Also ich habs geschaft

    [autoit]


    For $i = 1 to 100
    $var = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", $i)
    if @error <> 0 Then ExitLoop
    MsgBox(4096, "Value Name #" & $i & " AutoStart", $var)
    next

    [/autoit]
  • Oha Thx also ich machs so wies ich grad gefunhden hab aber danke für die "Abgrassachen" also die Verzeichnisse mit dem autostart einträgen