#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()

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
