Autostart Laufwerke

    • Offizieller Beitrag

    Da man im Windows XP Home ja keine Gruppenrichtlinien hat um den Autostart der Laufwerke zu managen, habe ich mal ein kleines Tool dafür erstellt, das den entsprechenden Registryeintrag ausliest und neu setzt.
    Standardmäßig wird auf Eintrag unter HKCU geprüft, falls dort nichts steht, wird HKLM verwendet.
    Gerade für Wechseldatenträger (die meisten USB-Sticks werden als solche erkannt) und USB-Festplatten (werden als Festplatten erkannt) macht es Sinn den Autorun zu deaktivieren.
    Steckt man z.B. eine 500 GB externe Platte an, die auch noch voll ist, kann man Kaffe trinken gehen, bis die vom Autorun eingelesen wurde. :D
    Zum Anderen bietet die autorun.inf gerne Schädlingen Unterschlupf :cursing: (Möchte nicht wissen, wie oft Conficker sich allein durch Anstöpseln von USB-Sticks vermehrt hat.)

    Edit: Nicht vergessen - geänderte Einstellungen werden erst mit einem Neustart aktiv. ;)
    Edit 2: Ich bin grad total perplex. :wacko: Hab das an einem andren PC probiert - ohne Wirkung. ?( Kann jemand von euch Erfolg vermelden?

    Hier der kleine Helfer:

    Spoiler anzeigen
    [autoit]

    #cs
    Bit Wert Bedeutung Standardwert

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

    7 128 reserviert und immer gesetzt 1
    6 64 Autostart für RAM-DISK 0
    5 32 Autostart für CD-ROM 0
    4 16 Autostart für Netzwerklaufwerke 1
    3 8 Autostart für feste Datenträger (Festplatte) 0
    2 4 Autostart für wechselbare Datenträger (z.B. Diskettenlaufwerk) 1
    1 2 Laufwerk ohne Root 0
    0 1 Autostart für unbekannte Laufwerkstypen 1

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

    Hex-Wert: Standard 95
    #ce

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

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $aCB[7][2]
    Global $RegKey = 'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
    Global $Value = "NoDriveTypeAutoRun"
    Global $CurrentSet = RegRead($RegKey, $Value)
    If @error Then $RegKey = 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
    $CurrentSet = RegRead($RegKey, $Value)
    If @error Then $CurrentSet = 0x00000095

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

    $GUI = GUICreate("Autorun - Settings", 392, 252, 266, 134)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUIClose")
    $Group1 = GUICtrlCreateGroup("", 15, 9, 360, 226)
    $aCB[0][0] = GUICtrlCreateCheckbox("RAM-Disk", 45, 39, 80, 17)
    $aCB[1][0] = GUICtrlCreateCheckbox("CD-ROM", 45, 66, 100, 17)
    $aCB[2][0] = GUICtrlCreateCheckbox("Netzlaufwerke", 45, 93, 100, 17)
    $aCB[3][0] = GUICtrlCreateCheckbox("Festplatte", 45, 120, 100, 17)
    $aCB[4][0] = GUICtrlCreateCheckbox("Wechseldatenträger", 45, 147, 140, 17)
    $aCB[5][0] = GUICtrlCreateCheckbox("Laufwerk ohne Root", 45, 174, 140, 17)
    $aCB[6][0] = GUICtrlCreateCheckbox("Unbekannte Laufwerke", 45, 201, 140, 17)
    $btSet = GUICtrlCreateButton("Neu Setzen", 240, 39, 110, 20, $WS_GROUP)
    GUICtrlSetState(-1, $GUI_DISABLE)
    GUICtrlSetOnEvent(-1, "btSetClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    For $i = 0 To 6
    GUICtrlSetOnEvent($aCB[$i][0], "cbClick")
    $aCB[$i][1] = 2^(6-$i)
    Next
    GUISetState(@SW_SHOW)

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

    _MarkCB()

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

    While 1
    Sleep(100)
    WEnd

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

    Func GUIClose()
    Exit
    EndFunc

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

    Func cbClick()
    If BitAND(GUICtrlGetState($btSet), $GUI_DISABLE) Then GUICtrlSetState($btSet, $GUI_ENABLE)
    EndFunc

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

    Func btSetClick()
    Local $val = 0
    For $i = 0 To 6
    If BitAND(GUICtrlRead($aCB[$i][0]), $GUI_CHECKED) Then
    $val += $aCB[$i][1]
    EndIf
    Next
    RegWrite($RegKey, $Value, 'REG_DWORD', '0x' & Hex($val+128, 8))
    GUICtrlSetState($btSet, $GUI_DISABLE)
    EndFunc

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

    Func _MarkCB()
    For $i = 0 To 6
    If BitAND($CurrentSet, $aCB[$i][1]) Then
    GUICtrlSetState($aCB[$i][0], $GUI_CHECKED)
    Else
    GUICtrlSetState($aCB[$i][0], $GUI_UNCHECKED)
    EndIf
    Next
    EndFunc

    [/autoit]
  • Schönes programm funtkioniert bei mir auf vista 32Bit auch super

    mich wundert auch immer woher manche die namen ihrer programme her haben

    • Offizieller Beitrag

    Mich wundert immer Welche Tollen Ideen du doch Hast.


    Mich auch :rofl:
    Scherz beiseite, ich habe eine Projektliste, in der ich meine Ideen verewige. Und die wird immer länger. Solch kleine Sachen, wie das hier macht man ja mal nebenbei. Aber etwas komplexeres, wie z.B. meine ListviewFormat-UDF hat insgesamt etwa 1/2 Jahr Arbeit geschluckt.
    Und der Tag hat leider nur 24 h. ;)

  • Bei mir gehts auch super :thumbup:

    In meiner Klasse(Laptopklasse ;) ) hatten wa auch mal n Virus der sich über Sticksverbreitet hat... Hinterher war er so oft vorhanden, dass ich n Programm geschrieben hab was sich selbst auf alle Sticks draufschreibt wo der Virus is und ihn dabei überschreibt... Das hatte natürlich n Mechanismus wonach es sich nach ein paar Tagen gelöscht hat, ich wollte ja nit alle Sticks der Klasse zumüllen :D