【问题标题】:autorun.inf: how to get drive letter?autorun.inf:如何获取驱动器号?
【发布时间】:2010-10-23 20:24:27
【问题描述】:

我已通过autorun.inf将此条目添加到 U 盘的上下文菜单中:

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

PuTTY\pageant.exePuTTY\davids.ppk 都是 U 盘上的文件,应该从那里获取。

当我从棒的根部在 shell 中运行它时,它会按预期工作。但是从菜单启动它会尝试从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。

有没有办法让它正常工作?我想它应该能够传递驱动器号或让资源管理器使用棒作为工作目录,但我不知道如何。由于我想在旅途中使用棒,我宁愿避免硬编码我的本地驱动器号。

【问题讨论】:

    标签: windows autorun


    【解决方案1】:

    它似乎读取“路径”系统变量。 :(您可以将驱动器添加到路径,但获取驱动器号是问题。:-(

    更新 1:您可以使用 VB 脚本获取驱动器号。

    更新 2:是的,我认为您可以这样做。检查这个page

    更新 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 驱动器。

    【讨论】:

    • 感谢您的回答,它促使我在问题中做出一些澄清。
    【解决方案2】:

    我认为最简单的解决方案是创建一个批处理文件来为您执行此操作。像这样命名为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 放入您的U 盘,并将autorun.inf 更改为:

    [AutoRun]
    shell\pageant=Activate SSH Key
    shell\pageant\command=activatekey.cmd
    

    【讨论】:

    • 嗯,好的 - 我已经编辑了脚本,将目录更改为与 activatekey.cmd 文件的位置相同。我想知道这对你有用吗? (实际上,我对您的想法感到非常兴奋,以至于我已经在我的 USB 记忆棒上实现了类似的东西!除了我的解决方案有点复杂 - 即使在 pageant.exe 执行后也允许安全地移除记忆棒。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多