#3042·rufus

SetLGP() 恢复操作会从 gpt.ini 中删除 Scripts CSE,默认情况下会禁用所有本地组策略启动/关闭脚本

作者: bilbospocketses创建于 2026年9月3日更新于 2026年9月8日

rufus.log Checklist ---------- - [x] 我查看了 https://GitHub.com/pbatard/rufus/wiki/FAQ,看看我的问题是否已经得到解答。 - [x] 我使用与我的问题相关的关键字在问题跟踪中搜索了类似问题。 最近的两个问题是 #711 和 #961,都与 SetLGP() 的副作用有关,但都没有确定导致此问题的特定条目。 - [x] 我拥有导致此问题的运行的完整日志,如下所示。 它有 82 KB/1150 行,超出了 GitHub 的问题主体限制,因此主体包含了头和尾以及每一行的 SetLGP;完整文件已附加。 这不是一个媒体创建问题 - 媒体写入得很好。 问题在于主机上留下的内容。 问题描述 ------------------ 在运行 Rufus 后,C:\Windows\System32\GroupPolicy\gpt.ini 中缺少了 Scripts 客户端扩展条目。 其影响是,在本地组策略中配置的每个启动和关闭脚本都会默默停止运行gpedit.msc 仍然列出了脚本,而 psscripts.ini 保持不变,因此看起来没有问题 - 脚本只是再也不会执行。 我花了一些时间才找到这个问题,因为你通常会查看的每个地方都显示了正确配置的脚本。 ### 问题所在的行 ini gPCMachineExtensionNames=[{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{2D4156A2-897A-11DB-BA21-001185AD2B89}{3D271CFC-2BC6-4AC2-B633-3BDFF5BDAB2A}{D02B1F72-3407-48AE-BA88-E8213C6761F1}] 缺少以下内容: [{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}] {42B5FAAE-…} 是 Scripts CSE,{40B6664F-…} 是其插件。 我没有字节级别的前面的图像,但那对应该存在,因为 Scripts 扩展仍然在当天晚上处理本地 GPO(日志如下)。 与此同时,{3D271CFC-2BC6-4AC2-B633-3BDFF5BDAB2A} 仍然存在。 这是 SetLGPThread() 中的 snap_guid,位于 src/stdfn.c 中 - 具有 "// 可以是任何东西" 评论的那一条。 因此,Rufus 传递的任意 GUID 经过了恢复,而紧邻它的 Scripts 对也没有。 ### 恢复应该做什么 c hr = pLGPO->lpVtbl->Save(pLGPO, TRUE, (p->bRestore)?FALSE:TRUE, &ext_guid, &snap_guid); 在恢复过程中,bAddFALSE,这应该从扩展列表中删除 REGISTRY_EXTENSION_GUIDsnap_guid。 这两个都仍然存在于文件中。 从未传递给 Save() 的一对是被删除的。 ### 日志中缺少恢复行 每个 SetLGPThread() 退出路径都会通过 ubprintf 记录,无论是成功还是失败,以及 SetLGP() 中的 5 秒钟卡死线程超时。 日志中只有一行 SetLGP,共 1150 行: SetLGP: Successfully set NoDriveTypeAutorun policy to 0x0000009E 没有恢复。 既不是成功,也不是错误,也不是卡死线程杀死。 恢复肯定运行了,尽管 Windows 记录了机器目标的策略刷新 …