Bien, vamos por partes
Lo primero de todo, el método de autoejecutar un archivo desde un pendrive es algo prehistórico ya que a partir de Windows vista (o fue desde windows 7, no recuerdo bien) quedó totálmente obsoleto, Microsoft eliminó por completo la capacidad de poder ejecutar un autorun desde un dispositivo extraible por los motivos de seguridad que ya te puedes imaginar, así que en estos tiempos que corren solo puedes escribir un autorun para dispositivos de CD-ROM.
...Aunque, por otro lado, habian (no se si aún existen) dispositivos USB que su hardware se hacia pasar por un dispositivo de CDROM, pudiendo así engañar al sistema Windows para iniciar un autorun desde ese pendrive "camaleónico". para que te hagas una idea, como esos USB de los chinos de eBay que dicen tener más capacidad de almacenamiento de la que reálmente tienen.
En resumen, el autorun solo te va a servir para los que usen Windows XP o inferior, no vale la pena experimentar con métodos antiguos.
Bien, sobre autoejecutar un archivo desde el registro, debes saber dos cosas importantes:
1. Es un método facil y efectivo, lo que implica que a su vez sea igual de facil de detectar como mirar en la lista de procesos que se ejecutan al inicio de Windows, e igual de facil es de eliminar.
2. La mayoría de gente que usa esa técnica no saben que tiene sus limitaciones, la limitación más grande es que este archivo no se podrá ejecutar si el usuario inicia sesión en modo seguro, claro ...eso es lo que pasa si se juega a hacer "virus" sin nisiquiera conocer apenas como funciona un sistema operativo. aunque esto se puede llegar a conseguir de forma facil.
A continuación te detallaré (
no mucho) los dos puntos improtantes que acabo de mencionar:
1.
El registro de windows proporciona una clave para indicar ciertos archivos que se deben ejecutar al inicio del sistema,
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
La raíz
HKEY_LOCAL_MACHINE (también conocida como
HKLM) hace referencia a todos los usuarios del sistema, es decir, si añades la subclave para iniciar tu programa en esa clave, tu programa se iniciará en la sesión de todos los usuarios.
La raíz
HKEY_CURRENT_USER (también conocida como
HKCU) hace referencia a la sesión del usuario actual, es decir, si añades tu programa ahí se iniciará solamente en la sesión del usuario actual.
Aquí puedes ver varios ejemplos de como añadir un programa a esta clave, usando Batch:
:: Converted with REG2BAT v2.1 by Elektro
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Hot Corners" /T "REG_SZ" /D "Wscript.exe \"C:\Program Files (x86)\Hot Corners\RUN.vbs"" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "MiniBin" /T "REG_SZ" /D "C:\Program Files (x86)\MiniBin\minibin.exe" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Rocket Dock" /T "REG_SZ" /D "C:\Program Files (x86)\RocketDock\RocketDock.exe" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Sidebar" /T "REG_SZ" /D "C:\Program Files\Windows Sidebar\sidebar.exe /autoRun" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Sizer" /T "REG_SZ" /D "C:\Program Files (x86)\Sizer\Sizer.exe" /F
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "Automatic wallpaper Changer" /T "REG_SZ" /D "C:\Program Files\Automatic Wallpaper Changer\Automatic wallpaper Changer.exe" /F
Examinemos una orden cualquiera del script que he msotrado:
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "MiniBin" /T "REG_SZ" /D "C:\Program Files (x86)\MiniBin\minibin.exe" /F
El valor del parámetro
ADD del comando
REG es
HKCU\Software\Microsoft\Windows\CurrentVersion\Run, esto indica la subclave donde agregar el nuevo valor.
El valor del parámetro
/V (o
Value) indica el nomrbe del nuevo valor, en este caso
MiniBinEl valor del parámetro
/T (o
Type) indica el tipo de datos del valor (pues puede ser un valor de tipo String, o binario, etc) en este caso es
REG_SZ que hace referencia a tipo String (texto) y es el valor por defecto (es decir, no es necesario especiicar el parámetro
/T si los datos son de tipo texto).
Y por último, el valor del parámetro
/D (o
Data) indica los datos del valor, en este caso es la ubicación del programa que queremos ejecutar
C:\Program Files (x86)\MiniBin\minibin.exeComo nota adicional, puedes usar variables de entorno (
%WINDIR%,
%APPDATA%, etc) si estableces el tipo de subclave a
REG_EXPAND_SZ, si el valor es de tipo
REG_SZ no te va a funcionar la variable de entorno que escribas (adentro de los datos del valor me refiero, no en el script Batch).
2.
Ya sabes como añadir tu programa al inicio de Windows, ahora, ¿Como evitar que el programa no se inicie en modo seguro?
Bueno, por pura lógica si Windows tiene un modo de inicio que se denomina "
Modo seguro", es por una buena razón, ya que sólamente se cargan los drivers y otros elementos esenciales del sistema operativo, omitiendo así cualquier programa innecesario al cargar windows, como por ejemplo, los programas que agreguemos al registro para que se ejecuten al inicio de sesión.
Pero esto es algo tan sencillo de evitar como añadir el símbolo
* al nombre del valor, por ejemplo:
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /V "*Programa" /T "REG_SZ" /D "C:\MiPrograma.exe" /F
El prefijo
* se denomina
WildCard, en casi todos los comandos de Batch se suele utilizar para indicar un conjunto de varios elementos (por ejemplo, si tenemos un archivo que se llama
Archivo1.txt y otro archivo que se llama
Archivo2.txt, podemos recopilar todos los archivos utilizando la expresión
Archivo*.txt), y en este caso indica que el programa debe seguir ejecutandose
incluso en modo seguro en todos los modos de inicio del sistema.
Y creo que con esto, ya queda todo dicho.
Si tienes dudas pregunta.
Saludos