InicioApuntes Y MonografiasBloqueo de los puertos USB
Como muchos ya han de saber, un porcentaje mayor de los virus entran a tu computadora aparte de Internet, también por memoria infectadas y mas cuando tienes bastantes computadoras y el control a veces no es del todo total.

hay un dicho que me gusta mucho, las memorias son como el sexo, es decir la memoria solo metela en una sola maquina, si la metes en mas de una, hay muchas probabilidades que se te infecte...

Este proyecto se genero en delphi 7 y funciona también con embarcadero 2010; este proyecto solo afecta a las memorias USB, puedes conectar cualquier otro dispositivo como impresoras, scaner y no se vera afectado.

al momento de que tu insertas una memoria al puerto usb, este automáticamente busca en los driver en los archivos:

usbstor.inf
sbstor.PNF



https://cxs2fw.blu.livefilestore.com/y1pIprjzVVtBofGdtr-71lCFUGWmS7grGs588E_5E7fsU4L1scOcMP8d7Xx_nC-ykXoygyVoGW6xzf_mTNUY6zJWMuye7XkWyQy/usbstor.bmp?psid=1

al no encontrar estos archivos los drivers de cualquier memoria que se inserte no se instalara los drivers.

por otro lado si la memoria ya había sido insertada con anterioridad estos archivos ya no son útiles ya que los drivers ya están instalados y tendríamos que recurrir al registro para bloquearlo.

"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesUSBSTORStart"
3 = Habilitado
4 = DesHabilitado

ahora que mas o menos sabemos como funciona el bloqueo del usb, veamos le código del mismo

las librerías que utilizaremos serian las siguientes:

Registry,ShellAPI

{el primer proceso que tendremos seria el de cambiar el nombre de los archivos, para cuando queramos habilitar la opción de instalar de nuevo una memoria usb regresemos los archivos a su nombre original y listo
usbstor.inf
sbstor.PNF
}

Procedure Tusbs.MadrearArchivo(Sender: TObject);
Var
lpFileOp: TSHFileOpStruct;
ArchivoABuscar1,ArchivoABuscar2:String;
Begin
ArchivoABuscar1:='C:WINDOWSinfusbstor.inf';
If FindFirst(ArchivoABuscar1, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Self.Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:WINDOWSinfusbstor.inf' + #0#0);
lpFileOp.pTo := PChar('C:WINDOWSinfusbstorinf.Txt' + #0#0);
lpFileOp.fFlags:= FOF_SIMPLEPROGRESS or FOF_FILESONLY;
lpFileOp.fAnyOperationsAborted := FALSE;
lpFileOp.hNameMappings := nil;
lpFileOp.lpszProgressTitle := PChar('Trasladando archivos al disco D' + #0#0);
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.inf a usbstorinf.Txt');
End;

ArchivoABuscar2:='C:WINDOWSinfusbstor.PNF';
If FindFirst(ArchivoABuscar2, faAnyFile and not (faVolumeID or faDirectory), SearchRec) = 0 then
Begin
lpFileOp.Wnd := Handle;
lpFileOp.wFunc := FO_RENAME;
lpFileOp.pFrom := PChar('C:WINDOWSinfusbstor.PNF' + #0#0);
lpFileOp.pTo := PChar('C:WINDOWSinfusbstorPNF.Txt' + #0#0);
lpFileOp.fFlags:= FOF_ALLOWUNDO or FOF_RENAMEONCOLLISION;
if ShFileOperation(lpFileOp) <> 0 then
ShowMessage('Ha Fallado El cambio de Nombre de Archivo de usbstor.PNF a usbstorPNF.Txt');
End;
End;

recuerda que hay que crear tus procedimientos para regresar los archivos a la normalidad, ya que estos procedimientos cambian el archivo a un txt,

una vez hecho esto entonces creamos el procedimiento para habilitar o deshabilitar el puertos usb del registro:


Procedure EnableUSB(Value: Boolean);
begin
With TRegistry.Create do
Try
RootKey:= HKEY_LOCAL_MACHINE;
If OpenKey('SYSTEMCurrentControlSetServicesUSBSTOR',TRUE) then
begin
if Value then
WriteInteger('Start',3)
Else
WriteInteger('Start',4);
CloseKey;
end;
finally
Free;
end;
end;

para mandarlos llamar solo:

EnableUSB(False);
MadrearArchivo(Sender);

y bueno aunque faltan otros detalles, como iconizarlo, y que corra siempre cuando inicie windows, por el momento es el proposito de este post,
Datos archivados del Taringa! original
5puntos
1,234visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
2visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

r
rakzozeram🇦🇷
Usuario
Puntos0
Posts1
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.