禁止用户安装指定软件之WIN排障日记

一、禁止安装"海豚湾"软件

我要解决的问题

机器上有一个 E:\Windows\Desktop\海豚湾\安装程序.exe,是个 NSIS(Nullsoft)自解压安装包——外壳先跑起来,再解压出内部程序,内部进程名叫 Sw.eXe。我的目标是彻底拦住它。

我踩过的坑

我一开始写了个 BAT 脚本,打算用 SRP(软件限制策略)的路径规则 + 哈希规则 + 禁用 MSI 来封杀。结果脚本一闪而过,啥也没干成。

排查下来,问题一大堆:

  1. SRP 路径规则不支持用户变量。我写了 %USERPROFILE%,微软根本不认这个,得老老实实枚举 C:\Users\* 下每个真实目录。
  2. BAT 提权检测行写错了。重定向目标误写成了 cacls.exe 自己,脚本直接提前退出。
  3. 哈希格式对不上。我存的是 MD5(16 字节),文件实际是 SHA256(32 字节)。SRP 哈希字段必须用 Binary 类型写进去。
  4. 最致命的:Enforce 没开。SRP 的强制执行值一直没设成 1,意味着所有规则只是"建议",系统根本不执行。最后我用 Python 直接写注册表,把 Enforce=1 钉死。
  5. NSIS 的套路。SRP 哈希只匹配外层壳,内层解压出来的 Sw.eXe 哈希完全不一样——所以哈希规则对 NSIS 自解压包形同虚设

最终我用的方案

放弃跟 SRP 死磕,改用任务计划程序按进程名硬杀

taskkill /F /IM Sw.eXe /T

建一个计划任务,触发器设成"启动计算机"+"每分钟重复(无限期)"。NSIS 解压出 Sw.eXe 的瞬间就被杀掉,没有逃跑窗口。

我的结论

  • SRP 路径/哈希规则对 NSIS 自解压包不靠谱
  • 按进程名杀是最简单粗暴也最有效的兜底手段

二、远程机 WiFi 故障排查

现象

重装 WiFi 驱动后能连网,但一重启就 WiFi 被禁用且手动启用不了net start wlansvc 倒是能临时救回来。

我的排查过程

我一步一步往下挖:

步骤我执行的命令看到了什么
先排除组策略gpresult /h工作组机器,SRP 默认"不受限",没有禁用网络的策略 → 跟 SRP 无关
查 wlansvc 状态sc.exe query wlansvcSTOPPED,退出码 1068(依赖失败)
看 wlansvc 依赖(Get-Service wlansvc).ServicesDependedOnwcmsvc 是 Stopped
查 wcmsvc 状态sc.exe query wcmsvc也 STOPPED,退出码 1068
看 wcmsvc 依赖(Get-Service wcmsvc).ServicesDependedOnRpcSs / NSI / WinHttpAutoProxySvc 全部 Running
手动拉起net start wcmsvcnet start wlansvc都成功 → 说明是启动时序问题
查服务组reg query ...\wcmsvc /v GroupGroup = TDI(传输驱动接口层)
试延迟启动DelayedAutoStart=1重启照样失败,TDI 时序改不了

根因

wcmsvc(WLAN 连接管理器)属于 TDI 组。开机时 TDI 网络栈还没就绪,它就急着启动,结果报 1068 依赖失败,连锁把 wlansvc 也拖死了。手动启动时 TDI 已经好了,所以能成功。

我最终的解决方案

用计划任务绕开 Windows 底层时序:

  1. 打开 taskschd.msc,右侧点"创建基本任务"
  2. 名称填 StartWiFiAfterBoot
  3. 触发器选 计算机启动时
  4. 操作选启动程序 → cmd.exe
  5. 参数填 /c net start wcmsvc && net start wlansvc
  6. 双击任务 → 常规 → 勾上 "使用最高权限运行""不管用户是否登录都要运行"
  7. 条件 → 取消"只有在计算机使用交流电源时才启动"
  8. 确定后重启验证,开机大约 2 分钟后 WiFi 自动恢复

三、Armoury Crate 干扰排查

我发现了什么

翻事件日志看到几个线索:

  • 开机后 ArmouryCrate.UserSessionHelper.exe重置覆盖电源策略方案
  • 事件 ID 100(警告):Armoury Crate 延迟系统关闭 3078ms——这直接打乱了开机服务启动顺序
  • ASUS 一共 14 个服务,最可疑的是 ASUSOptimization(开机重写系统策略)和 ArmouryCrateService
  • 注册表里 WiFiRoaming=0x0,说明没有 GameFirst 之类的网络优先级模块在直接捣乱

我的判断

ASUS 没有专门的网络模块,但 ASUSOptimization 可能间接把服务启动时序搞乱了。

我设计的对照实验

  1. 禁用 ASUSOptimization + ArmouryCrateService
  2. 同时禁用 WiFi 计划任务
  3. 重启看 WiFi 能不能自动恢复

    • 能恢复 → 确认是 ASUS 干扰,永久禁用这两个服务
    • 还是不行 → 排除 ASUS,根因就是 Windows TDI 时序问题,继续用计划任务兜底

四、新需求:用证书规则禁止安装 WeGame

目标

文件是 E:\Windows\Desktop\WeGameMiniLoader.std.7.06.27.1446.exe,我想用 SRP 的证书规则来封——这样同一发布者所有版本、所有路径、改了名也全拦得住。

我准备的手动教程

第一步:先验证签名(只读操作,不会执行 exe):

Get-AuthenticodeSignature "E:\Windows\Desktop\WeGameMiniLoader.std.7.06.27.1446.exe" | Format-List Status, SignerCertificate
  • Status=Valid 才能做证书规则
  • 如果显示 NotSigned,这条路就走不通

第二步:建证书规则

  1. 运行 gpedit.msc
  2. 计算机配置 → Windows 设置 → 安全设置 → 软件限制策略 → 其他规则
  3. 右键 → 新建证书规则 → 安全级别选"不允许的"
  4. 点"浏览"直接选那个 exe,系统会自动从文件提取证书,不用手动导出 .cer

第三步:检查关键开关

软件限制策略 → 右键"强制" → 绝不能勾选"忽略证书规则",否则所有证书规则全部失效。

第四步:刷新策略

gpupdate /force

备用方案:如果确实需要 .cer 文件,右键 exe → 属性 → 数字签名 → 详细信息 → 查看证书 → 复制到文件 → 选 DER 编码 .CER。

等用户反馈

  • 签名状态是否 Valid
  • 发布者名称(大概率是 "Tencent Technology ...")

下一步待办

  • [ ] 用户反馈 WeGame 签名状态 → 建证书规则
  • [ ] 用户验证 Armoury Crate 对照实验结论
  • [ ] 确认 WiFi 计划任务长期稳定运行

觉得内容不错?我要

评论 暂无评论
暂无评论,快来抢沙发吧~