autorun.inf: как получить букву диска? - PullRequest
3 голосов
/ 05 мая 2009

Я добавил эту запись в контекстное меню USB-накопителя через autorun.inf:

[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=PuTTY\pageant.exe PuTTY\davids.ppk

И PuTTY\pageant.exe, и PuTTY\davids.ppk являются файлами на USB-накопителе и должны быть извлечены оттуда.

Когда я запускаю это в оболочке из корня флешки, она работает как задумано. Но, запустив его из меню, он пытается загрузить ключ из C:\Windows\system32\PuTTY\davids.ppk (проверяется с помощью Process Monitor ).

Попытка использовать простой сценарий cmd привела к следующему выводу:

    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.

Есть ли способ заставить это работать должным образом? Я предполагаю, что он сможет передать букву диска или заставить проводник использовать флешку в качестве рабочего каталога, но я не знаю как. Поскольку я хочу использовать флешку на ходу, я бы предпочел избегать жесткого кодирования буквы моего локального диска.

Ответы [ 2 ]

3 голосов
/ 05 мая 2009

Я думаю, что самым простым решением было бы создать пакетный файл, чтобы сделать это для вас. Что-то с именем activatekey.cmd вроде этого:

REM switch to the directory containing this script
for %%a in (%0) do cd /D %%~da%%~pa

cd PuTTY
pageant.exe davids.ppk

Поместите файл activatekey.cmd в USB-накопитель и измените autorun.inf на:

[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=activatekey.cmd
1 голос
/ 05 мая 2009

Кажется, он читает системную переменную «Путь». :( Вы можете добавить диск в путь, но проблема заключается в получении буквы диска.: - (

Обновление 1: букву диска можно получить с помощью сценария VB.

Обновление 2: Да, я думаю, что вы можете сделать это. Проверьте эту страницу .

Обновление 3: я тестировал скрипт. Отлично работает.

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

Используйте какой-либо метод проверки наличия файлов для различения нескольких USB-накопителей.

...