autorun.inf: как получить букву диска?
Вопрос
Я добавил эту запись в контекстное меню 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
(проверяется с помощью Монитор процессов ).
Попытка использовать простой сценарий 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.
Есть ли способ заставить это работать правильно? Я предполагаю, что он сможет передать букву диска или заставить проводник использовать флешку в качестве рабочего каталога, но я не знаю как. Поскольку я хочу использовать флешку на ходу, я бы предпочел избегать жесткого кодирования буквы моего локального диска.
Решение
Я думаю, что самым простым решением было бы создать пакетный файл, чтобы сделать это для вас. Что-то с именем activkey.cmd
, например:
REM switch to the directory containing this script
for %%a in (%0) do cd /D %%~da%%~pa
cd PuTTY
pageant.exe davids.ppk
Поместите файл activkey.cmd
на USB-накопитель и измените autorun.inf
следующим образом:
[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=activatekey.cmd
Другие советы
Похоже, что здесь написано "Путь" системная переменная. :( Вы можете добавить диск в путь, но проблема заключается в получении буквы диска.: - (
Обновление 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-накопителей.