Day 7104 在 Windows 10 下使用 LPD 打印服务共享打印机

自从 2021 年的 KB5005565 开始,微软就在玩坏 Windows 内置的打印机共享功能的道路上越走越远,虽然知道微软是为了修复 Windows 共享中的漏洞而做出的修改,但你要不要首先确保用户的功能可以继续正常使用?

时至今日,微软的出品质量越来越差,每一次的 Windows Update 都可能引入新的严重 bug,尤其是共享打印机功能,以前通常只需要考虑跨大版本不易解决(如 Win10 去连接 Win7 的共享打印机、XP 去连接 Win11 的打印机等等),而现在甚至同代系统之间都可以昨天还能用、今天就全炸锅了。

前一段时间因各种原因,给某公司组装了几十台办公电脑,由于并非常驻对方公司,无法像在供职公司一样出问题随时上门,在被 Windows 10 优秀的共享打印机功能教训过后(前一天同一个办公室还能用,第二天就全体报错,并且无法重新添加),终于在检索维护方案时,找到一种不需要额外投入成本的方法,即使用 Windows 目前还内置的 LPD 打印服务。

以下操作方式以 Windows 10 为例,Windows 11 操作相近,可自行摸索。

注:如果打印服务器和客户端同属于 Windows 10、11 系列,请优先将双方的网络配置文件设置为专有网络(专用网络),可以省掉很多问题。

一、安装  LPD 打印服务

在拟用作打印服务器(直连打印机)的电脑上打开“启用或关闭 Windows 功能”,启用“打印和文件服务”下的“LPD 打印服务”(无需勾选“LPR 端口监视器”,但选上也没有什么问题),点击确定安装此功能。

二、启用共享

为接下来要共享的打印机启用共享,此时需要记下共享名,稍后在其他机器添加打印机时会用到。

为达到最佳兼容性,共享名最好遵循以下规则:(1)全小写(录入时比较方便);(2)不要有空格;(3)限制在31个(含)字符内。

三、安装 LPR 打印端口

在打印客户端(其他电脑)上打开“启用或关闭 Windows 功能”,这次启用的是“打印和文件服务”下的“LPR 端口监视器”,点击确定安装此功能。

四、在客户机上添加打印机

(一)在“添加设备”对话框中直接点击“我所需的打印机未列出”,在下一步中选择“通过手动设置添加本地打印机或网络打印机”。

(二)选择“创建新端口”,端口类型选择“LPR Port”。

(三)在“添加 LPR 兼容打印机”对话框中,在“提供 LPD 的服务器的名称或地址”中输入打印服务器的 IP 地址,“服务器上的打印机名称或打印队列名称”中输入第二部中记下的共享名。

(四)在下一步中安装打印机驱动,可去厂商网站下载。

五、额外设置

安装完毕后,打开新增打印机的“打印机属性”,在“端口”中取消勾选“启用双向支持”,否则打印机可能没有反应,对于佳能 CAPT 协议的打印机而言,则可能报错“不支持打印机连接的端口”。

不过该方法也不是万能的,目前有观察到以下两种特殊情况:

一、HP Laserjet 1020 打印机的共享

作为一款经典型号,1020 打印机至今仍在生产新品,迄今已有 20 年的历史,其在官网上提供的“全功能软件和驱动程序”截止至 2016 年,安装程序也有很明显的 XP 年代的痕迹。

但是,如果用官方驱动进行 LPD 共享的话,无论如何无法成功,甚至连 Windows 自带的共享有时也困难重重,表现为可以成功添加打印机,可以成功发送打印任务,但打印机实际上不会有任何反应。

临时解决方案为:去 HP 官网下载官方的通用驱动(HP Universal Print Driver Series for Windows),将已添加的打印机驱动替换为这个通用驱动即可。(不保证 100% 修复,可能即使采用通用驱动也无法收到打印任务,最好还是能使用 Windows 自带的共享功能连接该型号的打印机)

此外,如果需要在 macOS 上添加此型号打印机的 LPD 共享连接,驱动程序选择 macOS 自带的 HP Laserjet 1022 即可(HP 官方没有提供 1020 的 macOS 驱动)。

二、LPD 服务报错找不到打印机

出现此错误时,其表象与上一个问题类似,即 LPD 共享可以正常添加,打印任务可以正常下达,但打印机不会有任何反应。

不同的是此时去客户机的事件查看器中,展开 Windows 日志-应用程序,会看到有级别为警告、来源为 Spooler-LPRSVC、事件 ID 为 2004 的记录,内容为:

行式打印机远程工具(LPR)服务无法将打印作业提交到主机(打印服务器 IP 地址)上的 Line Printer Daemon (LPD)打印机(打印机共享名),因为远程主机或打印机上的 LPD 服务正在拒绝打印作业。如果 LPD 服务正在处理其他打印作业则会发生这种情况。LPR 服务将重试打印,直到作业打印成功或用户取消打印作业为止。

在打印服务器上,可以看到级别为错误、来源为 Spooler-LPDSVC、事件 ID 为 4008 的记录,内容为(没有拍照所以为大致内容,来自对英语事件内容的翻译):

行式打印机远程工具(LPR)服务拒绝了来自(打印服务器 IP 地址)提供给(打印机共享名)的打印任务,因为指定的打印机不存在。请从客户端以正确的打印机名称重新发起打印任务。

此问题即便在客户机上添加 LPD 打印机时填写的共享名完全正确也可能发生(添加打印机时只校验服务是否可以连接,并不校验打印队列名称是否正确,所以请优先检查共享名称是否录入有误),临时解决方法为在服务器上给打印机换一个共享名,然后在客户机上重新添加 LPD 打印机,但也可能无效,具体原因仍有待探究。

三、其他一些添加共享打印机时问题的处理方案

(一)打印服务器为 Windows 10、客户端为 Windows 11,在服务器和客户机的网络配置文件均已设置为“专用网络”、打印服务器网络和共享设置已设置“启用文件和打印机共享”、“密码保护的共享”已经设置为“无密码保护的共享”且 Guest 账户没有被禁用的情况下,通过 \\IP 的 UNC 路径访问打印服务器提示“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问。这些策略可帮助保护你的电脑免受网络上不安全设备或恶意设备的威胁”

临时处理方法:

1 在出现上述提示时,使用账号 Guest、密码为空的凭据登录,此时可以看到共享打印机,但尝试安装会提示“0x00000040 指定的网络名不再可用”

2 在组策略“计算机配置-管理模板-打印机”中,将“配置 RPC 连接设置”中的“用于传出 RPC 连接的协议”从“RPC over TCP”修改为“命名管道上的 RPC”。

3 使用 gpupdate /force 更新组策略(或重启一下)。

Day 6887 为 Photoshop 的“图像处理器”增加 CR2 格式打开支持

由于工作的缘故,需要快速将一批 RAW 图片转换为 JPEG 格式,该批文件的格式较新,手里现有的 AcdSee 和 XnView 无法打开,并且已经没有时间安装 Lightroom 等软件,经查找 Photoshop 的“图像处理器”(文件-脚本-图像处理器)可以完成这一操作。

然而,在操作过程中,发现文件夹中的 CR2 格式文件被尽数跳过。经搜索,原因为 Photoshop 自带的“图像处理器”脚本在判断需要用  CameraRaw 打开的文件时并不包含 CR2 扩展名,幸好这一插件的文件是纯文本,只需对其进行修改即可。

以 Photoshop 2020 为例,用文本编辑器打开下列文件:

C:\Program Files\Adobe\Adobe Photoshop 2020\Presets\Scripts\Image Processor.jsx

在大约115行的位置找到:

gFilesForCameraRaw = Array( “TIF”, “CRW”, “NEF”, “RAF”, “ORF”, “MRW”, “DCR”, “MOS”, “SRF”, “PEF”, “DCR”, “DNG”, “ERF”, “X3F”, “RAW”);

在末尾添加 CR2 扩展名(注意保持大写),使其变成:

gFilesForCameraRaw = Array( “TIF”, “CRW”, “NEF”, “RAF”, “ORF”, “MRW”, “DCR”, “MOS”, “SRF”, “PEF”, “DCR”, “DNG”, “ERF”, “X3F”, “RAW”, “CR2”);

保存后重新调用图像处理器即可。

Day 6604 Word 中取消自动更新格式

在 Word 中编辑文档时,由于各种各样的原因(尤以外来文档居多),总会在录入一部分内容后一按回车,全文的部分内容就会变换为特定的格式(例如全部变成微软雅黑、自动缩进等等),而有时并不需要它这样多此一举——尤其是在修改一些长文档时特别烦人。

多数解决方法会要求去 Word 的选项中关闭“正文”样式的自动更新,但经尝试效果不彰,经搜索,找到一则通过 VBA 一次性关闭所有当前文档内置样式自动更新的方法:

Sub 清除自动套用格式()
  Dim update As Style
  Set Updates = ActiveDocument.Styles
  For Each update In Updates
    If update.Type = wdStyleTypeParagraph Then
      update.AutomaticallyUpdate = False
    End If
  Next
End Sub

将上述代码保存在通用模板 Normal.dotm 中,即可在任意文档中进行使用。

此处假设读者了解如何通过内置的 VBA 编辑器向 Normal.dotm 中添加宏,相关操作步骤请另行搜索。

Day 6556 Windows 7 下安装航天信息打印机驱动时,提示“操作无法完成(0x00000002)”或“系统找不到指定的文件”

情况说明:

在 Windows 7 x64 操作系统下安装航天信息 SK-860 税控打印机驱动时,在正常检测到设备的前提下,发生如下情况:

(1)使用其官方安装程序,开始安装后提示“操作无法完成(0x00000002)”,随后提示打印机驱动安装失败(0x00000002 即对应“系统找不到指定的文件”错误);

(2)在设备管理器中试图更新“其他设备”下对应的打印机设备驱动时,使用官方提供的驱动程序包,可以找到对应或兼容的设备型号,但开始安装后提示“系统找不到指定的文件”。

处理经历:

首先尝试上次安装 .NET Framework 3.5 的方法,但本次该方法无效,要么在启动安装程序后没有任何反应(或走完进度条后消失),要么直接给出必须使用“控制面板”中的“打开或关闭 Windows 功能”安装或配置 Microsoft .NET Framework 3.5 SP1 的提示(因为 .NET Framework 3.5 事实上是 Windows 7 的一部分)。

然后从低到高尝试安装各种版本的 .NET Framework ,虽然成功,但并没有解决问题,又发现该机器自 2019 年以来长期未安装过更新,遂运行 Windows Update,安装完所有能检测到的更新,仍未果。

最终后知后觉想到去查看“系统找不到指定的文件”的根源,在 \Windows\inf\SetupAPI.dev.log 中查找最近一次安装该打印机的记录:

flq: CopyFile: ‘C:\Windows\System32\DriverStore\FileRepository\sk-860.inf_amd64_neutral_aa11c87673493b48\amd64\SK-860.GPD’
flq: to: ‘C:\Windows\system32\spool\DRIVERS\x64\{6C859189-FD69-4CD3-9460-EA8EF1602268}\SETDB4.tmp’
cpy: CopyFile Drp is NOT active
flq: MoveFile: ‘C:\Windows\system32\spool\DRIVERS\x64\{6C859189-FD69-4CD3-9460-EA8EF1602268}\SETDB4.tmp’
flq: to: ‘C:\Windows\system32\spool\DRIVERS\x64\{6C859189-FD69-4CD3-9460-EA8EF1602268}\SK-860.GPD’
flq: {SPFILENOTIFY_ENDCOPY}
flq: {SPFILENOTIFY_ENDCOPY – exit(0x00000001)}
flq: {_commit_copyfile exit OK}
flq: source media:
flq: Description – [Windows 安装光盘]
flq: SourcePath – [C:\Windows\System32\DriverStore\FileRepository\ntprint.inf_amd64_neutral_02f0bd8e459ed8b3\Amd64]
flq: SourceFile – [UNIDRV.DLL]
flq: Flags – 0x00000000
flq: {SPFQNOTIFY_NEEDMEDIA}
flq: {SPFILENOTIFY_NEEDMEDIA}
flq: {SPFILENOTIFY_NEEDMEDIA – exit(0x00000000)}
flq: {SPFQNOTIFY_NEEDMEDIA – returned 0x00000000}
!!! flq: source media: SPFQOPERATION_ABORT.
!!! flq: Error 2: The system cannot find the file specified.
flq: {_commit_copy_subqueue exit(0x00000002)}
!!! flq: FileQueueCommit aborting!
!!! flq: Error 2: The system cannot find the file specified.
flq: {SPFILENOTIFY_ENDQUEUE}
flq: {SPFILENOTIFY_ENDQUEUE – exit(0x00000001)}
flq: {_commit_file_queue exit(0x00000002)}

注意其中带下划线的两行,明确指出了驱动安装过程中找不到的文件。

经查询,该问题主要出现在一些经过优化或精简的 Windows 7 系统上,在本例中,ntprint 所在驱动包目录名原本包括 02f0bd8e459ed8b3 和 4616c3de1949be6d 两个版本,而本次安装需要的 02f0bd8e459ed8b3 不存在,所以出错,解决方法有二:

(1)将 ntprint.inf_amd64_neutral_4616c3de1949be6d 文件夹及其内容复制一份,并改名为 ntprint.inf_amd64_neutral_02f0bd8e459ed8b3

(2)直接将 ntprint.inf_amd64_neutral_4616c3de1949be6d 文件夹改名为 ntprint.inf_amd64_neutral_02f0bd8e459ed8b3

完成上述操作后,重新安装驱动即可。

Day 6524 在 Windows XP 上安装 HP LaserJet Pro M127/128 打印机驱动时,提示“发生严重错误”或“系统找不到指定的文件”

情况说明:

由于实际情况所限,需要在一台 Windows XP(32位)的机器上安装 HP LaserJet Pro M127/128 的驱动程序,官方提供了相应操作系统的驱动程序,但总会发生如下情况之一:

(1)使用 HP 官方的安装程序(不论是“全功能软件和驱动程序”还是“PCLm 打印驱动程序”)进行安装,经历漫长的等待后,报“发生严重错误”,安装失败;

(2)对官方安装程序解包,或下载官方的“PCLm 驱动程序(无安装程序)”,然后在控制面板中手动添加打印机,或者使用设备管理器对“其他设备”中对应的感叹号设备进行更新(此时错误代码为 28:此设备的驱动程序未安装),开始安装后很快报错“系统找不到指定的文件”。

解决方法:

尝试多种方法未果后,抱着死马当活马医的心态尝试了一个百度知道中给出的答案:安装 .Net Framework 3.5(或者 .Net Framework 3.5 SP1)。非常神奇的是,装好后再尝试安装驱动,居然就真的顺利安装上了。

其他说明:

由于 Windows XP 对加密套件的支持比 Windows 7 还要古老,下载 .Net Framework 3.5 时最好下载离线安装包,并且在开始安装前断网(由于安装程序会尝试获取更新,但由于加密套件不支持会失败,一旦开始尝试就要等 5 个 60 秒才能放弃),安装完成后恢复网络即可。

Day 6447 在 64 位 Windows 10 下继续使用 MSSQL Server 2000

部分非常老的应用因厂家未提供更新,被迫在 Windows 10 下继续沿用其附带的 MSSQL Server 2000,会遇到报错“无法定位序数1于动态链接库C:\Windows\SYSTEM32\SQLUNIRL.dll上”。

该报错来自 SQL Server 2000 的”服务管理器”组件,实际上,SQL Server 2000 并非需要该组件才能正常运行,它只是提供了一个启动、停止 SQL 服务的界面,故该问题有两种解决方法:

1、禁用 SQL Server Service Manager 的自动启动:

右键单击任务栏选择“任务管理器”,在“启动”标签下找到 SQL Server Service Manager,右键单击选择“禁用”即可。

2、如果因为某些原因仍然需要此组件,也可以修复此问题:

以管理员权限打开命令提示符(cmd.exe),执行下列指令为 sqlunirl.dll 获取 TrustedInstaller 权限:

(注:MSSQL2000 是 32 位应用程序,本例 Windows 10 为 64 位版本,故下列指令中实际操作的是存在于 SysWOW64 目录中的文件,如为 32 位 Windows 10,请自行调整操作目标文件)

takeown /f “C:\Windows\SysWOW64\sqlunirl.dll”

icacls “C:\Windows\SysWOW64\sqlunirl.dll” /grant administrators:F

接下来,从 SQL Server 2000 安装包的 _x86\SYSTEM 目录下复制一个原版的 sqlunirl.dll,使用上述指令使其获得 TrustedInstaller 权限(注意修改操作目标),然后覆盖 SysWOW64 下的同名文件即可(注意先获取权限再覆盖,未测试顺序可否颠倒,如操作失败请按顺序操作试试看)。

Day 6314 关闭 Windows 10 中“下载”文件夹始终以“日期”进行分组

情况描述:

在 Windows 10 中,系统默认的“下载”文件夹可能会始终以“修改日期”进行分组排序,即按照类似下图的方式进行显示,并且这种分组对于“下载”文件夹是默认的,不能通过:

(1)在右键菜单中选择“分组依据-(无)”的方式进行修改,或

(2)在进行第(1)步操作后,在“文件夹选项”对话框中选择“应用到文件夹”的方式进行覆盖。

发生原因:

依据多个来源的信息,该问题是在 Windows 10 1903 版本后引入的,“下载”文件夹按照“修改日期”进行分组来自于系统模板设计,通过一般方式无法修改,只能修改注册表中的默认值。

处理方式:

1、打开注册表以下路径(提示:可以直接复制整个路径到菜单栏下方的文本框中,并按回车跳转):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FolderTypes\{885a186e-a440-4ada-812b-db871b942259}\TopViews\{00000000-0000-0000-0000-000000000000}

2、首先在左侧 {00000000-0000-0000-0000-000000000000} 项上点击右键,选择“权限”,并点击“高级”按钮,在对话框上方点击“所有者”(如果之前从未修改过该项的话,此处应显示为 SYSTEM)后面的“更改”,在后续弹出的“选择用户或组”中点击左下角的“高级”按钮,并在新弹出的“选择用户和组”对话框右侧点击“立即查找”,并在“搜索结果”中选择 Administrators(注意带s,意为管理员组),最后点击所有对话框的“确定”按钮。

3、在注册表右侧对以下键值的内容进行修改:

键值 GroupBy

原始值 System.DateModified

修改为 System.Null

键值 SortByList

原始值 prop:System.DateModified

修改为 prop:System.ItemNameDisplay

4、重启 explorer.exe 或系统,并重新进入“下载”文件夹,最后一次在右键菜单中将“分组依据”修改为“无”,此时关掉窗口再重新打开“下载”文件夹,可发现没有再次变回按修改时间分组,修改完毕。

参考资料:
1. https://superuser.com/questions/1566886/downloads-folder-keeps-getting-grouped

2. https://learn.microsoft.com/en-us/windows/win32/properties/props-system-null

3. https://blog.csdn.net/weixin_42218499/article/details/124884803

4. . https://www.cnblogs.com/lzl_17948876/p/14439746.html

Day 6153 HEU KMS 激活 Office 时报错 0x80080005

本文解决方案来自:https://blog.csdn.net/qazwsxrx/article/details/126393987

问题描述:

在使用 HEU KMS 激活工具激活 Office 时,经过长时间的等待后返回错误信息,错误码为 0x80080005,即使清除许可证再试也没有效果。

可能原因:

本次笔记时的原因为:该设备之前曾使用 HEU KMS 工具架设本地 KMS 服务器进行激活,但这一次采用的是公用 KMS 服务器激活,之前 KMS 激活工具为本地激活创建的映像劫持不能用于在线激活所致。

解决方法:

1、删除注册表下述键值:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\SppExtComObj.exe

2、重新激活即可。

Day 6013 关于 HP M128mfp 多功能一体机通过 Windows 文件与打印机共享时,客户机无法打印且 printfilterpipelinesvc.exe 锁定临时文件的问题

情况说明:

HP M128mfp 是一款打印、扫描、传真一体机,虽然支持通过网络端口进行连接使用,但由于现场条件的限制,采用了传统的 Windows 文件与打印机共享模式使用,在打印服务器(通过 USB 直连打印机的计算机)上安装完成后,使用 \\IP\打印机名 在客户机上进行安装,第一次打印测试成功。

但第二天使用时,下发打印任务无反应,且同时有以下情况:

(1)打印池文件夹(C:\Windows\System32\Spool\PRINTERS)中出现多个扩展名为 tmp 的临时文件(正常临时文件扩展名应为 SHD 和 SHL),且尝试删除时,会提示文件被 printfilterpipelinsvc.exe 占用

(2)只通过命令行停止 Spooler 服务仍无法删除上述临时文件,必须在服务控制台(service.msc)中停用 Printer Spooler 方可删除(该条非一定出现)。

处理方法:

该处理方法不适用于所有类似情况,只适用于本案例:

(1)在打印服务器上打开此打印机的『打印机属性』,在『高级』选项卡中点击『打印处理器』,将『打印处理器』从 winprint 修改为 hpcpp155(或其它以 hp 开头的选项),并保持『默认数据类型』为 RAW。

(2)重启客户机(本步骤不可忽略)。

Day 5996 关于天猫魔盒 1S+ 系统降级的笔记

家里有一台大约 2014 年购买的天猫魔盒 1S+(型号 M10),经过多年的使用和多次系统升级,操作已经变得非常卡顿,还要在每次开机时被迫看我从来不看的综艺节目、国产电视剧的广告,更不要提 YunOS 曾经在命令要求下随意删除用户自行安装的第三方软件的黑历史了。

好在,同样由于经过多年的使用,该型号的天猫魔盒早已退出阿里的日常维护设备列表,相关的破解等工作也已由爱好者们完善,经过搜索、查找资料,成功将系统版本降级回出厂的 2.4,现在操作比最后升级的版本流畅许多。现将相关操作笔记如下,供个人及其他人参考。

注意:本文不是教程,您需要具有一定 Android 刷机操作基础才可以参考本文,本人不对由此造成的任何后果(包括但不限于硬件损坏、变砖等)负任何直接或连带责任。

继续阅读 “Day 5996 关于天猫魔盒 1S+ 系统降级的笔记”