我有一个 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。我不知道为什么它是硬编码但不是动态的?