Day 12881 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 12850 在 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 12796 时光微尘:关于 Windows 3.2 中一处翻译的追忆

前些日子,为了求证某位群友提出的一个 Microsoft Office 中的设计问题,在网上试图查找早期版本的 Office,未果,却顺手解决了一个儿时的心中疑问。

起因是想找到(可能是)第一个具有简体中文语言的 Word 6.0,为此先去安装了其运行环境 Windows 3.2 简体中文版。使用过该版本 Windows 的朋友可能还记得其附带了一个简单的“Windows 教程”,用于帮助用户熟悉鼠标的操作和 Windows 的系统设计,其中有一节内容有这样一个画面:

看到这里,一个自儿时就存在的疑问立刻从心底浮现了出来:“苏打水”里面的“价格”到底是什么玩意?

为了验证这个问题,借助万能的互联网,又找来了繁体中文版的 Windows 3.1(简体中文版的 Windows 3.x 是单独一个版本号 3.2,其他版本都是 3.1),终于解开了这个疑惑:

对比可以看出,“优格”被错写成了“价格”,并且在群友的提醒下还发现“圣代”被错写成了“苏打水”。Windows 3.2 发布于 1993 年,是否由于简中版的翻译人员没有吃过“优格”和“圣代”而导致写错已无法考证,但或许可以将这一胜景称作 zh-ms 的开始(彼时 Windows 简体中文版的其他翻译质量还是很高的,不会出现如今“坐和放宽”的笑话)。

为求严谨,后续还找来了英文版 Windows 3.1 和俄文版 Windows 3.11 进行对照验证,结果是相同的:

日文版不论是 DOS/V 版本还是 PC-9800 的版本都没有带这个教程,故跳过。

这还真是一则有趣的历史印记。

Day 12773 在 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 12640 关闭 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