我已经找到此VBS脚本,它在HTA应用程序中显示默认打印机的名称。只要在默认打印机上至少设置了某些内容,它就可以正常工作,但是当我在新的用户负载上运行它时(当绝对没有任何内容设置为默认打印机时)会出现错误(下标超出范围:'[数字:0]')。
有什么办法解决这个问题?
<SCRIPT Language="VBScript">
dim defaultprn
Set WshShell = CreateObject("WScript.Shell")
defaultprn = WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
arrPrnStr = Split(defaultprn,",")
fullPrinterString = arrPrnStr(0)
arrFullPrnStr = Split(fullPrinterString,"\")
shortPrinterName= arrFullPrnStr(Ubound(arrFullPrnStr))
document.write("Default printer: " + shortPrinterName)
If shortPrinterName="Fax" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft XPS Document Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2013" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Print to PDF" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft XPS Document Write" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Document Image Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Office Document Image Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2005" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2006" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2007" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2008" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2009" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2010" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2011" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2012" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2013" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2014" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2015" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2016" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2017" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2018" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2019" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2020" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2021" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2022" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2023" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2024" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2025" Then
changedefaultprinter()
ElseIf shortPrinterName="OneNote" Then
changedefaultprinter()
ElseIf shortPrinterName=Empty Then
changedefaultprinter()
ElseIf shortPrinterName=Null Then
changedefaultprinter()
End If
</script>
提前感谢。
问题是您试图创建一个带有空变量的数组。由于用户没有默认打印机,因此注册表读取为空白。将空白插入数组会产生错误。所以你只检查它不是空的,例如使用<>。我添加了一条额外的IF语句来检查其余代码。底部还有一个else,这意味着如果它为空,则输出不带默认打印机的自定义消息。
<SCRIPT Language="VBScript">
dim defaultprn
Set WshShell = CreateObject("WScript.Shell")
defaultprn = WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
if defaultprn <> "" Then
arrPrnStr = Split(defaultprn,",")
fullPrinterString = arrPrnStr(0)
arrFullPrnStr = Split(fullPrinterString,"\")
shortPrinterName= arrFullPrnStr(Ubound(arrFullPrnStr))
document.write("Default printer: " + shortPrinterName)
If shortPrinterName="Fax" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft XPS Document Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2013" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Print to PDF" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft XPS Document Write" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Document Image Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Office Document Image Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2005" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2006" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2007" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2008" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2009" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2010" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2011" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2012" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2013" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2014" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2015" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2016" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2017" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2018" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2019" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2020" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2021" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2022" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2023" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2024" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2025" Then
changedefaultprinter()
ElseIf shortPrinterName="OneNote" Then
changedefaultprinter()
ElseIf shortPrinterName=Empty Then
changedefaultprinter()
ElseIf shortPrinterName=Null Then
changedefaultprinter()
Else
document.write("Default printer: " + "None")
End if
End If
</script>