- 工作站:Windows 7 (x64) [打印机安装目标]
- 服务器:Windows Server 2012 R2 (x64) [Active Directory,打印服务器]
我一直绞尽脑汁试图通过组策略安装这台打印机!出于某种原因,我根本无法使用 GPO 部署这台打印机。我尝试过将其设置为通过Computer Configuration->Policies->Windows Settings->Deployed Printers
以及 和Computer Configuration->Preferences->Control Panel Settings->Printers
进行部署User Configuration->Preferences->Control Panel Settings->Printers
。我还尝试过通过我的打印服务器管理控制台通过用户和/或计算机定位来添加它。我尝试了各种各样的方法,但都不起作用。我遵循了很多教程,看了很多视频,只是为了确保我没有遗漏任何东西,但这确实是一个简单的任务(理论上)......它就是行不通。
在尝试调试该问题时,我发现如果我去\\myserver\
并双击打印机,它会尝试安装打印机,然后提示我使用 UAC 类型提示安装驱动程序。
我尝试了所有能想到的方法来阻止该消息框弹出。我深入研究后发现,如果我要编辑名为Point and Print Restrictions
位于Computer Configuration->Policies->Administrative Templates->Printers
且位于的 GPO,则User Configuration->Policies->Administrative Templates->Control Panel->Printers
可以尝试将策略设置为Disabled
或Enabled
并选择Do not show warning or elevation prompt
策略设置底部列出的两个安全提示。
嗯,那也是失败了......
我确实发现,如果我尝试通过转到 unc 并输入我的管理员凭据来手动安装打印机,它会从服务器下载驱动程序并安装打印机(如预期的那样)。如果用户尝试移除打印机并以某种方式成功,那么只要他们注销并重新登录,GPO 就会按照我的要求重新添加打印机。但这要求我在每台 PC 上第一次手动添加它。
测试完毕后,从 GPO 中删除打印机,然后注销并重新登录。我可以运行命令printui /s /t2
来调出 GUI,这样我就可以轻松地删除已安装的驱动程序,将 PC 恢复到原始状态(要求管理员凭据)。我还了解到打印机存储在注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Connections
。当我试图删除打印机时,它告诉我我不能删除,我只需转到该注册表项并删除我试图删除的打印机的 GUID 项。然后只需重新启动打印后台处理程序服务,它就消失了。这并没有帮助我到达我想要的地方,但它有助于在调试问题期间删除打印机。
我读到过一些文章说,这可能是由于某种类型的 Windows 安全更新改变了某些东西。它之所以发布,是因为有一篇文章展示了如果你能够控制一台打印机,你就可以控制整个网络。当用户连接到打印机并下载驱动程序时,它会安装注入的软件并在机器上运行,等等……
我的主要目标是能够使用我正在使用的 GPO 将此打印机部署到此 OU 中的一组用户。但我尝试的每项操作都需要管理员登录才能执行(至少第一次)。有谁知道为什么我的打印机不会通过 GPO 自动添加自己,以及如何让该死的“您信任这台打印机吗?”消息消失?
答案1
“修复”方法是从打印机制造商处下载受信任的、可识别软件包的打印驱动程序;但是,由于并非所有制造商都会生产这些驱动程序,因此我在这里找到了一种解决方法:Cannon 论坛 - 软件包感知打印驱动程序(注意:这不适用于未签名的驱动程序,但有很多关于自签名打印驱动程序的教程。)
以下是解决此问题的步骤:
- 在打印服务器上安装所需的驱动程序
- 注意“Packaged”列下列出的所有驱动程序,其中列出的驱动程序为“false”。所有这些驱动程序都必须进行修改才能通过组策略进行部署。
- 编辑打印服务器上的注册表并转到以下位置:
- 对于 64 位驱动程序:HKLM\System\CurrentControlSet\Control\Print\Enviroments\Windowsx64\驱动程序\版本-X\{司机姓名}
- 对于 32 位驱动程序:HKLM\System\CurrentControlSet\Control\Print\Enviroments\Windows NT x86\驱动程序\版本-X\{司机姓名}
- 其中“X”是打印驱动程序“类型”,通常为“3”或“4”
- 编辑名为“PrinterDriverAttributes”的键,将当前设置的值加 1。(例如:如果当前值为“6”,则将其更改为“7”。)这将使打印服务器相信这些驱动程序已打包。
- 对每个未列为“打包”驱动程序的驱动程序执行此操作。
- 重新启动打印服务器。
- 现在一切都应该通过组策略进行部署(前提是您已正确配置所有常用的 GPO 设置)。
我正在亲自部署此修复程序;但是,由于它需要重新启动打印服务器,所以我直到今天晚上才能对其进行测试,因为我们的打印服务器还运行一些联网应用程序。
注册表编辑的替代解决方案是编辑打印机驱动程序 INF 文件并添加以下内容:
对于 32 位驱动程序:
[PrinterPackageInstallation.x86]
PackageAware=TRUE
对于 64 位驱动程序
[PrinterPackageInstallation.amd64]
PackageAware=TRUE
如果您决定编辑 INF 文件,则更容易从打印服务器中删除驱动程序,从干净下载中编辑 INF 文件,然后安装编辑后的驱动程序。
除此之外,请仔细检查Point and Print Restrictions
和的组策略设置Package Point and print - Approved Servers
。
背景信息
Microsoft 安全公告 MS16-087详细说明了一个安全问题,即恶意打印服务器可以通过“中间人”式攻击注入恶意代码。安全更新 KB3170455于2016年7月12日发布以修复此问题,但这会影响打印服务器的打印驱动程序的分发。
答案2
感谢注册表破解,使驱动程序以打包形式出现。仅凭这一点可能行不通。请确保将计算机策略包和打印设置与相关打印服务器一起设置为启用。
- 如果您的驱动程序在服务器上的打印管理器的打包列中显示为“false”,则请在打印服务器上进行上述注册表破解。
- 公司配置->管理模板->指向和打印限制已启用。
希望这可以帮助。