分类: 草草笔记

Day 12339 关于 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 12322 关于天猫魔盒 1S+ 系统降级的笔记

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

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

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

(更多…)

Day 12319 为 Windows 10 环境下的 InDesign CC 2015 配置专用字体库,解决需要使用 InDesign 时 Windows 10 安装大量字体后效率低下的问题

场景说明:

由于某些工作需求,时常需要使用 Adobe InDesign CC 2015 经手一些排版文件,为此系统中需要安装 3000 多种字体以适应不同印刷品的需求。

在 Windows 10 之前(Windows 8/8.1 不清楚是否存在这个问题),安装这个量级的字体,不会对操作系统的日常使用造成明显影响,除了在需要枚举字体时会有一定程度的拖慢(如 mspaint 中输入文字时点击字体选择下拉菜单、notepad 打开“字体”对话框时)。

Windows 10 起,微软似乎对系统的字体枚举与渲染机制进行了一些修改,当安装如上量级的字体时,不仅在需要列出字体时会拖慢,甚至在打开许多系统组件时都会发生拖慢现象,如:每次(不仅仅是初次)打开 cmd、notepad、mspaint 时,都会需要十几秒的时间才能打开。由于本人工作杂糅各种事务,故系统组件的拖慢是不可忍受的,而由于工作仍然包含排版文件的处理,不安装这 3000 多种字体又是不可能的。

为解决这个问题,经过了如下几种方法的尝试:

(1)由于最开始受影响的主要是 cmd,当时的系统版本是 Windows 10 20H1,故撰写一批处理文件(内容只有一行 exit),并放在登录时运行,其用意为通过加载一次 cmd 使其预读字体列表缓存。该做法仅对问题有轻微缓解,且当系统更新到 21H1 后彻底失效。

(2)通过调用 GDI API AddFontResourceA  对指定目录下的字体进行安装或卸载,由于临时性工作忙碌,未予实施。

(3)尝试使用字体管理软件,进行字体的安装与卸载。经过搜索,Windows 下的字体管理软件可能是个小众需求,搜到的几款软件(包括 Adobe Fonts、Typograf、FontBase、NexusFont、Connect Fonts、MainType)均因各种各样的原因(如无法先尝后买、与需求有差异、性能低下等)最终放弃。

(4)经会 cpp 编程的群友提醒,GDI 还有一个 API AddFontResourceExA 可以通过设置 FR_PRIVATE 标志位并进行注入来临时安装字体,但由于我不会 cpp 未能实践,而群友的实验性项目也不适用于本文的情况(InDesign 没有采用 GDI 来管理字体)。

(5)还是这位群友尝试帮忙,单独撰写了一款小工具,经在 Photoshop CS 2019 上试用成功,但在 InDesign CC 2015 上尝试注入进程时返回 HRESULT 3221225477,对应说明为 Access Violation,无果。

(6)仍然是上面这位群友,通过分析 InDesign 的启动过程,发现 InDesign 启动时会去读一下应用程序目录下的 Fonts 文件夹,尝试将字体丢进去,成功安装了只属于 InDesign 的私有字体。

最终解决方案:

(1)将字体或字体的快捷方式丢进 InDesign 目录下的 Fonts 文件夹中(CC 2015 默认安装目录:C:\Program Files\Adobe\Adobe InDesign CC 2015)。注意:依字体数量多少,初次启动时由于需要建立缓存,可能会有 10 分钟左右看不到 InDesign 的启动画面,但在任务管理器中可以看到 InDesign.exe 在努力读硬盘,是正常现象。

(2)或者可以删除 Fonts 文件夹,并建立到指定文件夹的目录符号连接,可避免(a)字体文件占用应用所在分区(b)手工创建每个字体文件的快捷方式之繁琐。

后记:

有了上述线索,经查阅 Adobe 在线文档,发现其中有一句很容易被忽略的话:

将字体文件复制到硬盘驱动器上 InDesign 应用程序文件夹的 Fonts 文件夹中,即可在 InDesign 中使用这些字体。但是,该 Fonts 文件夹中的字体仅对 InDesign 可用。

换句话说,InDesign 从一开始就提供了私有字体库的解决方案,只是很多人(包括我)之前根本就不知道有这回事,或者一直都在将就着用(InDesign 2021 起最低系统要求变更为 Windows 10,之前几个版本是 Windows 7,新版本无法通过降级操作系统本身将就,而 InDesign 新版本制作的版式文件,是无法直接在低版本中打开的)而已。

需要注意的是,在 InDesign SDK 文档中,有这样一句描述:

In prior releases, when InDesign started, it loaded any fonts in the folder named “Fonts” located in the same folder as the InDesign executable binary. Use of this folder is deprecated and might not be supported in future releases; however, InDesign currently still loads these fonts when it starts.

翻译过来是:

在以前的发行版本中,当 InDesign 启动时,会从与 InDesign 可执行文件同目录下的 Fonts 文件夹中加载其中包含的所有字体。对该文件夹的调用是一种过时设计,并且在未来的版本中可能不再支持。不过,目前 InDesign 仍然会在启动时加载这些字体。

也就是说,上述解决方案可能在未来也会失效,到时候可能需要寻找新的方法来解决这个问题。

Day 12121 Windows 网络共享换用户名密码连接出错的笔记

情况说明:

连接过一个带密码的 Windows 网络共享后,即使使用 net use * /del 删除了 IPC 连接(有时候甚至提示『列表是空的』),再次采用其它账号密码连接同一共享时,Windows 提示『不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次』,或『指定的网络文件夹目前是以其他用户名和密码进行映射的。要用其他用户名和密码进行连接,首先请断开所有现有的连接到网络共享的映射』的信息。

原因:

Windows 对共享连接的凭据进行了缓存,即使断开了 IPC 连接,仍然需要过一段时间等待缓存失效。

解决方法:

在管理员命令提示符下执行以下指令:

net use * /del /y && net stop workstation && net start workstation

第一段删除所有活动 IPC 连接,第二段和第三段重启 Workstation 服务,即可立即清除缓存的凭据。