autorun.inf: como obter letra de unidade?
Pergunta
Eu adicionei esta entrada no menue contexto de um stick USB via autorun.inf
:
[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=PuTTY\pageant.exe PuTTY\davids.ppk
Ambos PuTTY\pageant.exe
e PuTTY\davids.ppk
ficheiros no stick USB e deve ser escolhido a partir daí.
Quando eu executo isto em uma casca da raiz da vara funciona como pretendido. Mas iniciá-lo a partir do menu ele tenta carregar a chave de C:\Windows\system32\PuTTY\davids.ppk
(marcada com Processo monitorar ).
Tentando usar um script simples cmd resultou em esta saída:
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.
Existe uma maneira de obter esse trabalho corretamente? Eu acho que ele deve ser capaz de passar a letra de unidade ou obter o Explorer para usar a vara como diretório de trabalho, mas eu não sei como. Desde que eu quero usar a vara em movimento, eu prefiro evitar hardcoding minha letra da unidade local.
Solução
Eu acho que a solução mais fácil seria criar um arquivo de lote para fazer isso por você. Algo chamado activatekey.cmd
assim:
REM switch to the directory containing this script
for %%a in (%0) do cd /D %%~da%%~pa
cd PuTTY
pageant.exe davids.ppk
Coloque o activatekey.cmd
arquivo em seu stick USB, e mudar o autorun.inf
a ser:
[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=activatekey.cmd
Outras dicas
Parece que lê "Path" variável do sistema. :( Você pode adicionar a unidade a caminho, mas recebendo a letra de unidade é o problema. :(
Update 1:. Você pode obter a letra da unidade usando um script VB
Update 2: Sim, eu acho que você pode fazer isso. Marque esta página .
Update 3: Eu testei o script. Ele funciona muito bem.
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
Use algum método de verificação existência arquivo para vários drives USB diferenciar.