Re: Gestor de inicio automático de todas las unidades
Publicado: 26 Abr 2011, 08:18
No veo nada. Bueno al citar el post creo que he visto el código.Chefito escribió:Pues eso...que ahora en la empresa donde estoy montamos bastantes ordenadores y queremos protegerlos de los autoarranques indeseados (sobre todo de los usb), los archivos autorun.inf. Además, así evitamos que se nos cuelen más bichos en la intranet .
Decidí quitar todos los autoarranques de todas las unidades, pero resulta que se nos presentó otro problema....a un modelo de multifunción no le funcionaba el escaner cuando le quitábamos todos los autoarranques. Al final decidí hacer un programilla donde pudieses elegir las unidades a desconectar del autoarranque.
También hice que te generase un archivo (.bat o .reg) con las opciones que quisieses. Esto lo hice para no tener que mandar a las oficinas el programa completo y que el usuario empezase a jugetear con él. Simplemente genero el fichero (si por alguna casualidad rechaza uno lo intento con otro) y se lo mando para que lo ejecute y ya está.
Os dejo el código aquí:No es gran cosa, pero soluciona algo la papeleta .Código: Seleccionar todo
#NoTrayIcon #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_icon=disco.ico #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> ;FileInstall("C:\Documents and Settings\winxp\Escritorio\atomos.jpg",@TempDir & "\atomo.jpg") Global $Checkbox[6],$bateria $Gui = GUICreate("Gestor de ejecuciones automáticas", 400, 254, 192, 114) $Menu1 = GUICtrlCreateMenu("&Habilitar/Deshabilitar autorun USB") $Menu1Item1 = GUICtrlCreateMenuItem("Habilitar ejecución automática", $Menu1) $separador1 = GUICtrlCreateMenuItem("", $Menu1, 2) ; create a separator line $Menu1Item2 = GUICtrlCreateMenuItem("Deshabilitar ejecución automática en todas las Unidades", $Menu1) $Menu1Item3 = GUICtrlCreateMenuItem("Deshabilitar ejecución automática de Unidades que elijas", $Menu1) $separador2 = GUICtrlCreateMenuItem("", $Menu1, 4) ; create a separator line $Menu1Item4 = GUICtrlCreateMenuItem("Ver que Unidades estas deshabilitadas en este ordenador", $Menu1) $Menu2 = GUICtrlCreateMenu("&Generar Archivo") $Menu2Item1 = GUICtrlCreateMenu("Ejecutable .BAT", $Menu2) $Menu2Item1Item1 = GUICtrlCreateMenuItem("Habilitar ejecución automática", $Menu2Item1) $Menu2Item1separador1 = GUICtrlCreateMenuItem("", $Menu2Item1, 2) ; create a separator line $Menu2Item1Item2 = GUICtrlCreateMenuItem("Deshabilitar ejecución automática en todas las Unidades", $Menu2Item1) $Menu2Item1Item3 = GUICtrlCreateMenuItem("Deshabilitar ejecución automática de Unidades que elijas", $Menu2Item1) $separador1 = GUICtrlCreateMenuItem("", $Menu2, 2) ; create a separator line $Menu2Item2 = GUICtrlCreateMenu("Ejecutable .REG", $Menu2) $Menu2Item2Item1 = GUICtrlCreateMenuItem("Habilitar ejecución automática", $Menu2Item2) $Menu2Item2separador1 = GUICtrlCreateMenuItem("", $Menu2Item2, 2) ; create a separator line $Menu2Item2Item2 = GUICtrlCreateMenuItem("Deshabilitar ejecución automática en todas las Unidades", $Menu2Item2) $Menu2Item2Item3 = GUICtrlCreateMenuItem("Deshabilitar ejecución automática de Unidades que elijas", $Menu2Item2) $Menu3 = GUICtrlCreateMenu("&Acerca del...") $Menu3Item1=GUICtrlCreateMenuItem("Programa", $Menu3) $Menu3Item2=GUICtrlCreateMenuItem("Programador", $Menu3) GUISetBkColor(0x003f87) $Frame=GUICtrlCreateGroup("DESHABILITAR EJECUCIÓN AUTOMÁTICA", 8, 40, 289, 185) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFFFFFF) $Checkbox[0] = GUICtrlCreateCheckbox(" En unidades de tipo desconocido.", 23, 60, 232, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFFFFFF) $Checkbox[1] = GUICtrlCreateCheckbox(" En unidades extraíbles.", 23, 82, 161, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFFFFFF) $Checkbox[2] = GUICtrlCreateCheckbox(" En unidades fijas.", 23, 104, 129, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFFFFFF) $Checkbox[3] = GUICtrlCreateCheckbox(" En unidades de red.", 23, 126, 145, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFFFFFF) $Checkbox[4] = GUICtrlCreateCheckbox(" En unidades de CD-ROM.", 23, 148, 177, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFFFFFF) $Checkbox[5] = GUICtrlCreateCheckbox(" En discos RAM.", 23, 170, 121, 17) GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xFFFFFF) $Button2 = GUICtrlCreateButton("MARCAR TODOS", 18, 200, 100, 20, $WS_GROUP) GUICtrlSetBkColor(-1, 0x808000) $Button3 = GUICtrlCreateButton("DESMARCAR TODOS", 170, 200, 120, 20, $WS_GROUP) GUICtrlSetBkColor(-1, 0x808000) GUICtrlCreateGroup("", -99, -99, 1, 1) $Button1 = GUICtrlCreateButton("APLICAR", 312, 200, 81, 25, $WS_GROUP) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xC0C0C0) GUICtrlSetBkColor(-1, 0x008080) $ButtonFile = GUICtrlCreateButton("GENERAR" & @CRLF & "ARCHIVO" & @CRLF & ".BAT", 312, 182, 81, 43, $WS_GROUP+$BS_MULTILINE) GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0xC0C0C0) GUICtrlSetBkColor(-1, 0x008080) GUICtrlSetState(-1,$GUI_HIDE) OcultarFrame() ;$Pic1 = GUICtrlCreatePic(@ScriptDir & "\atomo.jpg", 0, 0, 400, 235, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) $Pic1 = GUICtrlCreatePic(@TempDir & "\atomo.jpg", 0, 0, 400, 235, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS)) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $menu1item1 OcultarFrame() $resultReg1=RegDelete("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoDriveTypeAutorun") $resultReg2=RegDelete("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer","NoDriveTypeAutorun") If ($resultReg1 Or $resultReg2)=1 Then MsgBox(8192+64,"Autorun","La ejecución automática de todas las Unidades ha sido habilitada con éxito.") ElseIf ($resultReg1 Or $resultReg2)=0 Then MsgBox(8192+48,"Autorun","La ejecución automática de todas las Unidades ya está habilitada.") Else MsgBox(8192+16,"Autorun","La habilitación de la ejecución automática de todas las Unidades ha fallado.") EndIf Case $menu1item2 OcultarFrame() $resultReg1=RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoDriveTypeAutorun","REG_DWORD",255) $resultReg2=RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer","NoDriveTypeAutorun","REG_DWORD",255) If ($resultReg1 Or $resultReg2) Then MsgBox(8192+64,"Autorun","La ejecución automática en todas las Unidades ha sido deshabilitada con éxito.") Else MsgBox(8192+16,"Autorun","La deshabilitación de la ejecución automática en todas las Unidades ha fallado.") EndIf Case $menu1item3 ActivarFrame() MostrarFrame() Case $Button2 MarcarTodos() Case $Button3 DesmarcarTodos() Case $button1 $datoReg=VerMarcas() $resultReg1=RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoDriveTypeAutorun","REG_DWORD",$datoReg) $resultReg2=RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer","NoDriveTypeAutorun","REG_DWORD",$datoReg) If ($resultReg1 Or $resultReg2) Then MsgBox(8192+64,"Autorun","La ejecución automática en las Unidades elejidas ha sido deshabilitada con éxito.") Else MsgBox(8192+16,"Autorun","La deshabilitación de la ejecución automática en las Unidades elejidas ha fallado.") EndIf Case $menu1item4 DesmarcarTodos() $valorRegMachine=RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoDriveTypeAutorun") $valorRegUser=RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer","NoDriveTypeAutorun") If $valorRegMachine="" Then OcultarFrame() MsgBox(8192+64,"Autorun","La ejecución automática de todas las Unidades se encuentra habilitada.") ElseIf $valorRegMachine=255 Then OcultarFrame() MsgBox(8192+64,"Autorun","La ejecución automática de todas las Unidades se encuentra deshabilitada.") Else If $valorRegMachine>=128 Then $valorRegMachine-=128 GUICtrlSetState($checkbox[0],$GUI_CHECKED) EndIf If $valorRegMachine>=64 Then $valorRegMachine-=64 GUICtrlSetState($checkbox[5],$GUI_CHECKED) EndIf If $valorRegMachine>=32 Then $valorRegMachine-=32 GUICtrlSetState($checkbox[4],$GUI_CHECKED) EndIf If $valorRegMachine>=16 Then $valorRegMachine-=16 GUICtrlSetState($checkbox[3],$GUI_CHECKED) EndIf If $valorRegMachine>=8 Then $valorRegMachine-=8 GUICtrlSetState($checkbox[2],$GUI_CHECKED) EndIf If $valorRegMachine>=4 Then $valorRegMachine-=4 GUICtrlSetState($checkbox[1],$GUI_CHECKED) EndIf If $valorRegMachine=1 Then GUICtrlSetState($checkbox[0],$GUI_CHECKED) EndIf GUICtrlSetState($button1,$GUI_HIDE) GUICtrlSetState($button2,$GUI_HIDE) GUICtrlSetState($button3,$GUI_HIDE) GUICtrlSetState($buttonFile,$GUI_HIDE) DesactivarFrame() MostrarFrame(0) EndIf Case $Menu2Item1Item1 OcultarFrame() $textoFile="REG DELETE HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDriveTypeAutorun /f" & @CRLF $textoFile= $textoFile & "REG DELETE HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer /v NoDriveTypeAutorun /f" $nombreFile=AbrirDialogoGuardar() If $nombreFile<>-1 Then guardarArchivo($nombreFile,$textofile) EndIf Case $Menu2Item1Item2 OcultarFrame() $textoFile= "REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDriveTypeAutorun /t REG_DWORD /d 255 /f" & @CRLF $textoFile= $textoFile & "REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDriveTypeAutorun /t REG_DWORD /d 255 /f" $nombreFile=AbrirDialogoGuardar() If $nombreFile<>-1 Then guardarArchivo($nombreFile,$textofile) EndIf Case $Menu2Item1Item3 GUICtrlSetData($buttonFile,"GENERAR" & @CRLF & "ARCHIVO" & @CRLF & ".BAT") ActivarFrame() MostrarFrame(1,0) $bateria=1 Case $Menu2Item2Item1 OcultarFrame() $textoFile= "Windows Registry Editor Version 5.00" & @CRLF & @CRLF $textoFile= $textoFile & "[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer]" & @CRLF $textoFile= $textoFile & '"NoDriveTypeAutorun"=-' & @CRLF &@CRLF $textoFile= $textoFile & "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer]" & @CRLF $textoFile= $textoFile & '"NoDriveTypeAutorun"=-' & @CRLF $nombreFile=AbrirDialogoGuardar(".reg") If $nombreFile<>-1 Then guardarArchivo($nombreFile,$textofile) EndIf Case $Menu2Item2Item2 OcultarFrame() $textoFile= "Windows Registry Editor Version 5.00" & @CRLF & @CRLF $textoFile= $textoFile & "[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer]" & @CRLF $textoFile= $textoFile & '"NoDriveTypeAutorun"=dword:ff' & @CRLF &@CRLF $textoFile= $textoFile & "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer]" & @CRLF $textoFile= $textoFile & '"NoDriveTypeAutorun"=dword:ff' & @CRLF $nombreFile=AbrirDialogoGuardar(".reg") If $nombreFile<>-1 Then guardarArchivo($nombreFile,$textofile) EndIf Case $Menu2Item2Item3 GUICtrlSetData($buttonFile,"GENERAR" & @CRLF & "ARCHIVO" & @CRLF & ".REG") ActivarFrame() MostrarFrame(1,0) $bateria=0 Case $buttonFile If $bateria Then $datoReg=VerMarcas() $textoFile= "REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDriveTypeAutorun /t REG_DWORD /d " & $datoreg & " /f" & @CRLF $textoFile= $textoFile & "REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoDriveTypeAutorun /t REG_DWORD /d " & $datoreg & " /f" $ext=".bat" Else $datoReg=Hex(VerMarcas()) $textoFile= "Windows Registry Editor Version 5.00" & @CRLF & @CRLF $textoFile= $textoFile & "[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\policies\Explorer]" & @CRLF $textoFile= $textoFile & '"NoDriveTypeAutorun"=dword:' & $datoreg & @CRLF &@CRLF $textoFile= $textoFile & "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\policies\Explorer]" & @CRLF $textoFile= $textoFile & '"NoDriveTypeAutorun"=dword:' & $datoreg & @CRLF $ext=".reg" EndIf $nombreFile=AbrirDialogoGuardar($ext) If $nombreFile<>-1 Then guardarArchivo($nombreFile,$textofile) EndIf Case $Menu3Item1 MsgBox(0,"Acerca del programa","Programa realizado para proteger el ordenador contra los archivos que se autoejecutan al insertar algún tipo de unidad en el ordenador (autorun.inf)." & @cr & @CR & "Código totalmente libre y modificable. Se ruega nombren al autor si se utiliza parte del código ;).",0,$gui) Case $Menu3Item2 MsgBox(0,"Acerca del programador","Programa realizado por chefito." & @cr & @CR & "Saludos a toda la comunidad de http://www.AutoIt.es",0,$gui) EndSwitch WEnd Func OcultarFrame() GUICtrlSetState($frame,$GUI_HIDE) For $n=0 to 5 GUICtrlSetState($checkbox[$n],$GUI_HIDE) Next GUICtrlSetState($button1,$GUI_HIDE) GUICtrlSetState($button2,$GUI_HIDE) GUICtrlSetState($button3,$GUI_HIDE) GUICtrlSetState($buttonFile,$GUI_HIDE) EndFunc Func MostrarFrame($valor=1,$boton=1) GUICtrlSetState($frame,$GUI_SHOW) For $n=0 to 5 GUICtrlSetState($checkbox[$n],$GUI_SHOW) Next If $valor Then If $boton Then GUICtrlSetState($buttonFile,$GUI_HIDE) GUICtrlSetState($button1,$GUI_SHOW) Else GUICtrlSetState($button1,$GUI_HIDE) GUICtrlSetState($buttonFile,$GUI_SHOW) EndIf GUICtrlSetState($button2,$GUI_SHOW) GUICtrlSetState($button3,$GUI_SHOW) EndIf EndFunc Func ActivarFrame() For $n=0 to 5 GUICtrlSetState($checkbox[$n],$GUI_ENABLE) Next EndFunc Func DesactivarFrame() For $n=0 to 5 GUICtrlSetState($checkbox[$n],$GUI_DISABLE) Next EndFunc Func MarcarTodos() For $n=0 To 5 GUICtrlSetState($checkbox[$n],$GUI_CHECKED) Next EndFunc Func DesmarcarTodos() For $n=0 To 5 GUICtrlSetState($checkbox[$n],$GUI_UNCHECKED) Next EndFunc Func GuardarArchivo($NombreFile,$TextoFile) $file = FileOpen($NombreFile, 2) FileWrite($file, $textoFile) FileClose($file) If $file=-1 Then MsgBox(8192+16,"Creación de Archivo - ERROR","El archivo no se ha podido crear.") Else MsgBox(8192+64,"Creación de Archivo","El archivo se ha creado con éxito.") EndIf EndFunc Func AbrirDialogoGuardar($extension=".bat") $var = FileSaveDialog("Guardar archivo " & $extension, @ScriptDir & "\", "Archivos (*" & $extension & ")", 18, "AutoRun" & $extension, $GUI) If @error Then MsgBox(8192+16,"Error","No ha puesto ningún nombre de archivo válido") Return -1 ElseIf StringRight($var,4)=$extension Then Return $var Else $var=$var & $extension Return $var EndIf EndFunc Func VerMarcas() Local $datoReg=0 If BitAND(GUICtrlRead($checkbox[0]),$GUI_CHECKED)=$GUI_CHECKED Then $datoReg=1 If BitAND(GUICtrlRead($checkbox[1]),$GUI_CHECKED)=$GUI_CHECKED Then $datoReg=$datoReg + 4 If BitAND(GUICtrlRead($checkbox[2]),$GUI_CHECKED)=$GUI_CHECKED Then $datoReg=$datoReg+8 If BitAND(GUICtrlRead($checkbox[3]),$GUI_CHECKED)=$GUI_CHECKED Then $datoReg=$datoReg+16 If BitAND(GUICtrlRead($checkbox[4]),$GUI_CHECKED)=$GUI_CHECKED Then $datoReg=$datoReg+32 If BitAND(GUICtrlRead($checkbox[5]),$GUI_CHECKED)=$GUI_CHECKED Then $datoReg=$datoReg+64 Return $datoReg EndFunc
Dejo el ejecutable con una imagen de fondo y un icono que dejan el aspecto del script mucho mejor. Bajadlo y ya vereis. También dejo el código.
http://www.mediafire.com/?sharekey=0a5c ... f6e8ebb871
Saludos.
A ver si lologro. Debo tener algo mal.