autorun.inf: ¿cómo obtener la letra de unidad?
Pregunta
He agregado esta entrada al menú contextual de una memoria USB a través de autorun.inf
:
[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=PuTTY\pageant.exe PuTTY\davids.ppk
Tanto PuTTY \ pageant.exe
como PuTTY \ davids.ppk
son archivos en la memoria USB y deben recogerse desde allí.
Cuando ejecuto esto en un shell desde la raíz del stick, funciona según lo previsto. Pero al iniciarlo desde el menú, intenta cargar la clave desde C: \ Windows \ system32 \ PuTTY \ davids.ppk
(marcado con Monitor de procesos ).
Intentar usar una secuencia de comandos cmd simple resultó en esta salida:
C:\Windows\system32>cd PuTTY Das System kann den angegebenen Pfad nicht finden. C:\Windows\system32>pageant.exe davids.ppk Der Befehl "pageant.exe" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
¿Hay alguna manera de hacer que esto funcione correctamente? Supongo que debería poder pasar la letra de la unidad o hacer que el explorador use el stick como directorio de trabajo, pero no sé cómo. Como quiero usar el dispositivo sobre la marcha, prefiero evitar codificar mi letra de unidad local.
Solución
Creo que la solución más fácil sería crear un archivo por lotes para hacer esto por usted. Algo llamado enablekey.cmd
como este:
REM switch to the directory containing this script
for %%a in (%0) do cd /D %%~da%%~pa
cd PuTTY
pageant.exe davids.ppk
Coloque el archivo enablekey.cmd
en su dispositivo USB y cambie el autorun.inf
para que sea:
[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=activatekey.cmd
Otros consejos
Parece que se lee " Ruta " variable del sistema :( Puede agregar la unidad a la ruta pero obtener la letra de la unidad es el problema. :-(
Actualización 1: puede obtener la letra de la unidad utilizando un script VB.
Actualización 2: Sí, creo que puedes hacer eso. Compruebe esta página .
Actualización 3: probé el script. Funciona muy bien.
Dim oDrive
Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
For Each oDrive In oFSO.Drives
WScript.Echo "Drive Letter" , oDrive.DriveLetter
WScript.Echo "Drive Type" , oDrive.DriveType
Next
Utilice algún método de verificación de existencia de archivos para diferenciar múltiples unidades USB.