【问题标题】:VBscript to pull users default printerVBscript 拉取用户默认打印机
【发布时间】:2013-02-03 06:43:12
【问题描述】:

我遇到了一个 vbscript 的情况,它让我心烦意乱。我正在编写一个为用户提取默认打印机名称的 vbscript。我需要这个的原因是我稍后要删除所有打印机,然后用不同的驱动程序将它们放回去(该代码正在工作),我想将用户的默认打印机放回原来的打印机。

现在下面是我的代码,我遇到的问题是,如果我对 NetID 进行硬编码,一切正常,但如果我如下动态执行,则会出现错误。并非所有机器都具有相同的 netID,所以这就是我需要动态执行它的原因。我只是不明白为什么我的代码会出错。错误消息是“注册表项中的根无效”。

Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.echo WshShell.RegRead("HKEY_CURRENT_USER\Printers\Defaults\NetID")
Key = WshShell.RegRead("HKEY_CURRENT_USER\Printers\Defaults\NetID") 
Test = "HKEY_CURRENT_USER\Printers\Defaults\" & Key & "\"
WScript.echo WshShell.RegRead(Test)

例子:

Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.echo WshShell.RegRead("HKEY_CURRENT_USER\Printers\Defaults\NetID")
Key = WshShell.RegRead("HKEY_CURRENT_USER\Printers\Defaults\NetID") ' Returns 12345
Test = "HKEY_CURRENT_USER\Printers\Defaults\" & Key & "\"
WScript.echo WshShell.RegRead(Test) ' Error message

Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.echo WshShell.RegRead("HKEY_CURRENT_USER\Printers\Defaults\NetID")
Key = WshShell.RegRead("HKEY_CURRENT_USER\Printers\Defaults\NetID") ' Returns 12345
Test = "HKEY_CURRENT_USER\Printers\Defaults\12345\"
WScript.echo WshShell.RegRead(Test) 'Returns Default printer value of Lexmark T642

这是我想不通的。键在那里,并有一个名为 (Default) 的值设置为默认打印机的名称。我可以对脚本进行硬编码以获得我需要的东西,但并非每台机器都具有相同的 NetID。我不知道为什么它可以硬编码但不是动态的?

【问题讨论】:

    标签: vbscript registry


    【解决方案1】:

    当您尝试读取的密钥不存在时,会出现该错误消息。 例如,在我的机器上运行这段代码

    Set WshShell = WScript.CreateObject("WScript.Shell")
    Key = WshShell.RegRead("HKCU\Printers\DeviceOld")
    WScript.Echo Key   ' -> "Foxit PDF Printer"
    
    Test = "HKCU\Printers\" & Key & "\"
    
    ' ADD this line for debuging
    WScript.Echo Test  ' -> "HKCU\Printers\Foxit PDF Printer\"
    
    ' but that key not exist, so...
    Key = WshShell.RegRead(Test)  ' -> ...of couse error
    

    【讨论】:

    • 感谢 Panayot 的回复,但我仍然很困惑。我已经在上面编辑了我的问题以举例说明问题。
    • 嗯,也许删除密钥路径末尾的“\”会有所帮助?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    相关资源
    最近更新 更多