- 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.
Zum Anderen bietet die autorun.inf gerne Schädlingen Unterschlupf (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
#cs
Bit Wert Bedeutung Standardwert
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
Hex-Wert: Standard 95
#ce
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
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
$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)
_MarkCB()
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(100)
WEnd
Func GUIClose()
Exit
EndFunc
Func cbClick()
If BitAND(GUICtrlGetState($btSet), $GUI_DISABLE) Then GUICtrlSetState($btSet, $GUI_ENABLE)
EndFunc
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
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