autorun.inf: come ottenere la lettera di unità?
Domanda
Ho aggiunto questa voce nel menu contestuale di una chiavetta USB tramite autorun.inf
:
[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=PuTTY\pageant.exe PuTTY\davids.ppk
Sia PuTTY \ pageant.exe
che PuTTY \ davids.ppk
sono file sulla chiavetta USB e dovrebbero essere prelevati da lì.
Quando eseguo questo in una shell dalla radice dello stick, funziona come previsto. Ma avviandolo dal menu tenta di caricare la chiave da C: \ Windows \ system32 \ PuTTY \ davids.ppk
(controllato con Process Monitor ).
Il tentativo di utilizzare un semplice script cmd ha prodotto questo output:
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.
C'è un modo per farlo funzionare correttamente? Immagino che dovrebbe essere in grado di passare la lettera di unità o convincere l'esploratore a utilizzare lo stick come directory di lavoro, ma non so come. Dal momento che voglio usare lo stick in viaggio, preferirei evitare di codificare la mia lettera di unità locale.
Soluzione
Penso che la soluzione più semplice sarebbe quella di creare un file batch per farlo per te. Qualcosa chiamato activkey.cmd
come questo:
REM switch to the directory containing this script
for %%a in (%0) do cd /D %%~da%%~pa
cd PuTTY
pageant.exe davids.ppk
Posiziona il file activkey.cmd
nella tua chiavetta USB e modifica il autorun.inf
in:
[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=activatekey.cmd
Altri suggerimenti
Sembra che legga " Percorso " variabile di sistema. :( È possibile aggiungere l'unità al percorso ma ottenere la lettera dell'unità è il problema. :-(
Aggiornamento 1: è possibile ottenere la lettera di unità utilizzando uno script VB.
Aggiornamento 2: Sì, penso che tu possa farlo. Controlla questa .
Aggiornamento 3: ho testato lo script. Funziona benissimo.
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
Utilizzare un metodo di controllo dell'esistenza di file per differenziare più unità USB.