desactivar y activar el autorun de un pen drive

Iniciado por Fabricio, 16 Junio 2009, 22:18 PM

0 Miembros y 1 Visitante están viendo este tema.

Fabricio

Hola a todos estoy tratando de desactivar y activar el autorun de un pen drive
basicamente lo que quiero hacer es que cuando mi progama este funcionando modificar el registro (o lo que sea ) para que al insertar un pen no funcione el autorun... luego cuando cierro mi programa activar el autorun
el problema es que no se que registro ni que parametros modificar ni como  :huh:   

agradezco toda ayuda
saludos

BlackZeroX

#1
Cita de: fabricioAngel en 16 Junio 2009, 22:18 PM
Hola a todos estoy tratando de desactivar y activar el autorun de un pen drive
basicamente lo que quiero hacer es que cuando mi progama este funcionando modificar el registro (o lo que sea ) para que al insertar un pen no funcione el autorun... luego cuando cierro mi programa activar el autorun
el problema es que no se que registro ni que parametros modificar ni como  :huh:  

agradezco toda ayuda
saludos

Esto deberia ir en el Sub foro de Windows no en VB
The Dark Shadow is my passion.

h0oke

No creo que sea necesario editar el registro. Unicamente es cambiar parámetros en la reproducción automática de una unidad.

Dessa

Creo que lo que quiere fabricio es que su aplicacion lo haga automaticamente, se puede hacer agregando la clave HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun" que con el dato REG_DWORD  145 permite el autorun y con el dato REG_DWORD  181 no lo permite.
La parte mala es que hay que reiniciar la cpu para que tenga efecto... o sino podes matar el explorer y volverlo a ejecutar, pero eso se nota bastante.

Saludos


Adrian Desanti

BlackZeroX

Igual me aprece q reiniciando el proceso Explorer.exe, como este es el encargado de tal accion... tengo entendido¡!
The Dark Shadow is my passion.

Fabricio

#5
1)Puse este tema en vb  por que quiero desactivar y activar el autorun de un pen drive con codigo vb 6 no desde w xp

2) no encuentro la clave HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun  llego hasta policies pero esta vacia

3)Puede ser que existe una api que me permita actualizar el registro?? me parece que en algun foro lei algo pero no me acuerdo donde jeje
alguien sabe cual es y si actualisando el registro me evito reiniciar el explorer


saludos

Dessa



Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
    WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun", 181, "REG_DWORD"
Set WshShell = Nothing



Para activar el mismo code pero con 145
Tenes que matar el explorer y volcerlo a ejecutar

Saludos

Adrian Desanti

seba123neo

Hola, alguien vio la api SendMessageTimeout??, parece que con esa se puede refrescar el registro...busquen van a encontrar cosas interesantes...no puedo probarlas ahora...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Dessa

#8
Cita de: seba123neo en 18 Junio 2009, 03:20 AM
Hola, alguien vio la api SendMessageTimeout??, parece que con esa se puede refrescar el registro...

;-)


EDIT: Tambien "SendNotifyMessage" y "RefreshPolicyEx"

Adrian Desanti

Fabricio

Hola gente gracias por responder....buscando info en la web  mas el aporte de Dessa pude armar este ejemplo... a mi me funciona pruebenlo y me cuentan


Option Explicit

Private Sub Command1_Click()
'desactivar
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
    WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun", 181, "REG_DWORD"
Set WshShell = Nothing
Check1.Value = 1
Check2.Value = 0
Call KillProcess("explorer.exe")
End Sub


Private Sub Command2_Click()
'activar
Dim WshShell As Object
Set WshShell = CreateObject("WScript.Shell")
    WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun", 145, "REG_DWORD"
Set WshShell = Nothing
Check1.Value = 0
Check2.Value = 1
Call KillProcess("explorer.exe")
End Sub


Public Sub KillProcess(ByVal processName As String)
On Error GoTo ErrHandler
Dim oWMI
Dim ret
Dim sService
Dim oWMIServices
Dim oWMIService
Dim oServices
Dim oService
Dim servicename
Set oWMI = GetObject("winmgmts:")
Set oServices = oWMI.InstancesOf("win32_process")
For Each oService In oServices

servicename = LCase(Trim(CStr(oService.Name) & ""))

If InStr(1, servicename, LCase(processName), vbTextCompare) > 0 Then
ret = oService.Terminate
End If

Next

Set oServices = Nothing
Set oWMI = Nothing

ErrHandler:
Err.Clear
End Sub



saludos