You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过组策略(GPO)禁用Windows Subsystem for Linux(WSL)并阻止用户安装及启用该功能?

如何通过组策略(GPO)禁用Windows Subsystem for Linux(WSL)并阻止用户安装及启用该功能?

我完全理解你的处境——安全团队要求禁用WSL,但常规的PowerShell、注册表修改、Intune方案要么用不了,要么过不了安全审核,连找常规GPO选项都碰了壁。下面给你几个切实可行的GPO方案,能覆盖禁用现有WSL、阻止用户启用/安装的全部需求:

一、全面拦截WSL相关执行文件(堵死操作入口)

只限制wsl.exe确实不够,用户还能通过其他工具绕开。建议用软件限制策略(SRP)AppLocker(后者更灵活,适合企业环境)来批量拦截:

  • 必须拦截的核心执行文件:
    • C:\Windows\System32\wsl.exe
    • C:\Windows\System32\wslconfig.exe
    • C:\Windows\System32\lxrun.exe(针对旧版WSL)
  • 额外拦截分发版运行路径:WSL分发版通常安装在%USERPROFILE%\AppData\Local\Packages下带有CanonicalMicrosoftStore字样的文件夹,可通过路径规则禁止这些目录下的所有可执行文件运行。
  • 操作路径:计算机配置 -> Windows设置 -> 安全设置 -> 软件限制策略(或AppLocker),创建哈希规则或路径规则来禁止上述文件/路径的执行权限。

二、阻止用户启用WSL相关Windows功能

WSL依赖「适用于Linux的Windows子系统」「虚拟机平台」「Windows Hypervisor Platform」这几个系统功能,用GPO可以彻底锁死这些功能的启用入口:

  1. 直接隐藏「Windows功能」页面
    • 转到计算机配置 -> 管理模板 -> 程序 -> 控制面板 -> 程序和功能
    • 启用「隐藏‘Windows功能’页面」,这样用户根本打不开功能列表,彻底阻止操作。
  2. 精准禁用指定功能(保留其他功能可见)
    如果不想完全隐藏所有系统功能,可以通过GPO推送注册表项来禁用WSL相关功能的启用:
    • 针对「适用于Linux的Windows子系统」,添加注册表项HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9P9TQF7HHKLNP}(注:GUID可能因Windows版本略有差异,可自行查询对应版本的功能GUID),设置NoRemove值为1
    • 或者直接禁用WSL核心服务:推送注册表项HKLM\SYSTEM\CurrentControlSet\Services\LxssManager,将Start值设为4(代表禁用服务),这样即使功能没卸载,WSL也无法启动。

三、通过GPO脚本移除已安装的WSL

如果需要清理已存在的WSL环境,可以部署开机脚本自动执行移除操作:

  • 编写PowerShell脚本,内容如下:
    # 注销所有WSL分发版
    wsl --unregister-all
    # 禁用WSL及依赖功能
    dism /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart
    dism /online /disable-feature /featurename:VirtualMachinePlatform /norestart
    
  • 操作路径:计算机配置 -> Windows设置 -> 脚本(启动/关机),添加该脚本并设置好执行权限,确保开机时能自动运行。

另外你提到在系统服务GPO里找不到LxssManager,这大概率是因为你的组策略管理控制台(GPMC)没有更新到对应Windows版本的ADMX模板,不过没关系,用上面的注册表推送方法同样能达到禁用服务的效果,完全可以替代。

备注:内容来源于stack exchange,提问作者Merlin The Wizard

火山引擎 最新活动