sysprep.inf 中的 GuiRunOnce 在 Windows POSReady 中不起作用

本文可帮助你解决在执行后第一次启动后sysprep,sysprep.inf 文件中 GuiRunOnce 字段下列出的命令可能无法运行的问题。

原始产品版本: 基于文件的写入筛选器、Windows Embedded POSReady
原始 KB 数: 2390828

现象

在运行 Windows Embedded POSReady 且启用了基于文件的写入筛选器(FBWF)和注册表筛选器的设备上,在 sysprep.inf 文件中的 GuiRunOnce 字段列出的命令在执行后sysprep可能不会在第一次启动时运行。

这可能是由于缺少注册表项: HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce

原因

注册表项可能缺失,因为它未写入注册表数据库。 启用注册表筛选器驱动程序服务后,它可以防止注册表项写入注册表数据库。 注册表筛选器驱动程序用于保护嵌入式设备的注册表数据库。 它阻止用户对设备的注册表进行更改。 注册表筛选器驱动程序服务补充 FBWF 服务,应关闭这两项,以允许将注册表项写入注册表数据库。 遗憾的是,注册表筛选器驱动程序服务和 FBWF 服务在“服务”MMC 管理单元中均不可见。 若要控制其设置,可能需要修改相关的注册表设置。

解决方法

运行 Sysprep 文件之前,可能需要进行以下注册表项更改,以使 GUIRunOncen 命令能够在 Sysprep.ini 文件中工作。 注册表更改将禁用注册表筛选器驱动程序服务和 FBWF 服务。 启动注册表编辑器(转到“开始”、“运行”、“键入Regedit.exe,按 Enter)并创建以下 regnode(如果不存在),或者如果存在,请按下面所述设置值。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RegFilter] "Start"=dword:00000004

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\FBWF] "Start"=dword:00000004

现在, Sysprep 可以运行。

可以通过进行以下注册表更改来启用注册表筛选器驱动程序服务和 FBWF 服务:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RegFilter] "Start"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\FBWF] "Start"=dword:00000000

重要

此步骤指示修改注册表。 但是,注册表修改不当可能会出现严重问题。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表

可以通过多种方式添加这些注册表项。 可以使用 RegEdit,如以下示例所示。 或者,还可以使用注册表项(.reg)文件将注册表更改远程分发到多个基于 Windows 的计算机。 运行 .reg 文件时,文件内容将合并到本地注册表中。 因此,必须谨慎分发 .reg 文件。 以下文章提供了有关注册表的高级信息,其中介绍了多种编辑方法,包括 Regedit 和 .reg 文件:

高级用户的 Windows 注册表信息

使用 Regedit 的示例:

  1. 单击“开始”菜单,选择“运行...”

  2. 类型: Regedit

  3. 按 Enter 键或单击“确定”

  4. 将以下键添加到注册表的“软件”部分:

    [HKEY_LOCAL_MACHINE\software\Microsoft\Windows Embedded POSReady] "Version"=(REG_SZ)"2.0"

详细信息

注册表筛选器驱动程序服务是 FBWF 服务的一项免费服务,对于 Sysprep 方案,这两项服务都应关闭。 注册表筛选器驱动程序服务和 FBWF 服务在“服务”MMC 管理单元中不可见。 这需要通过注册表操作(直接或通过 REG 文件)来控制服务启动类型。