安装打印机但不要将其设为默认打印机 (windows, nsis)

install printer but dont make it default printer (windows, nsis)

我编写了一个设置 NUL: 端口并安装打印机驱动程序然后安装打印机的安装程序。但是,当我 运行 它在管理员帐户下时,打印机始终设置为默认打印机。

我怎样才能阻止这种情况发生?

这是设置打印机的代码:

ReadRegStr  HKLM "SYSTEM\CurrentControlSet\Control\Print\Printers$DisplayName" "Name"

${If} ${Errors}
      ExecWait '$SYSDIR\rundll32.exe printui.dll,PrintUIEntry /if /r "$PrinterPort" /b "$DisplayName" /z /Gw /f "$DriverPath" /m "$DriverModel"'
${EndIf}

对此我没有很好的答案。 This blog post 文档 /y 作为设置默认打印机的开关,但我没有看到防止更改默认打印机的开关。您可以尝试 /-y/y-,但我真的怀疑它们是否受支持。

您可以读取 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows 下的 Device 值以获取当前默认值,然后在完成后使用 RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "$SavedPrinterName" 恢复它,但这有点 hack 并且只会影响当前用户。

如果您是硬件制造商,您或许可以向微软支持寻求官方答复...