質問
このエントリを autorun.inf
を介してUSBスティックのコンテキストメニューに追加しました:
[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.
これを適切に機能させる方法はありますか?ドライブ文字を渡すか、エクスプローラを使用してスティックを作業ディレクトリとして使用できるようにする必要があると思いますが、方法はわかりません。外出先でスティックを使用したいので、ローカルドライブ文字をハードコーディングすることは避けたいです。
解決
最も簡単な解決策は、これを行うためのバッチファイルを作成することだと思います。次のような 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
USBスティックに activatekey.cmd
ファイルを配置し、 autorun.inf
を次のように変更します。
[AutoRun]
shell\pageant=Activate SSH Key
shell\pageant\command=activatekey.cmd
他のヒント
" Path"のようです。システム変数。 :(ドライブをパスに追加できますが、ドライブ文字を取得することが問題です。:-(
更新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ドライブを区別します。