微软可能会在即将推出的 Windows 11 24H2 和 25H2 更新中禁用 VBScript,并提供官方指南

微软可能会在即将推出的 Windows 11 24H2 和 25H2 更新中禁用 VBScript,并提供官方指南

微软的功能弃用:了解最新变化

微软会定期在其应用程序中逐步淘汰某些功能,该公司声称这一策略最终将惠及用户。仅今年一年,微软就发布了多项关于各种功能终止的公告,其中包括必应搜索 API 和 Edge 浏览器中的多项功能。

Windows 驱动程序和工具的重大变化

最近的公告包括终止 Windows 设备元数据和 Windows 元数据及互联网服务 (WMIS),以及停止一项被认为不值得持续支持的 Excel 功能。这种结构化方法体现了微软致力于在其平台上实现安全功能标准化的决心。

VBScript 的衰落

另一个值得注意的点是 VBScript 即将被移除。微软最初于 2023 年 5 月宣布弃用 VBScript,并于 10 月正式确认将分阶段移除。需要澄清的是,弃用声明并不等同于立即移除;相反,它标志着依赖此功能的组织将迎来一个过渡期。

了解弃用过程

弃用过程包含多个时间表,方便用户适应。微软于 2024 年 5 月制定了分为三个阶段的路线图。目前,VBScript 仍作为按需功能 (FOD) 默认启用。

VBScript 删除的预计时间表

微软表示,VBScript 作为 FOD 的默认可用性最早可能在 Windows 11 版本 24H2 或 25H2 中停止,这导致情况变得更加复杂,预计在 2026 年和 2027 年即将发布的 Windows 更新中会有进一步的修订。最近,微软就此事分享了新的见解:

在 VBScript 当前的弃用阶段,它作为按需功能 (FOD) 提供,并在 Windows 11 版本 24H2 中默认启用。在这些版本及未来的操作系统版本中默认禁用 VBScript 之前,务必确定企业环境中仍在使用 vbscript.dll 的位置和方式。

企业积极措施

鉴于 VBScript 可能比预期更早被禁用,微软敦促企业主动禁用 Windows 11 上的 VBScript 功能。该指南包括识别 VBScript 在其系统中的集成位置,以确保平稳过渡到不再使用 VBScript。

VBScript 的检测机制

微软概述了四种具体方法,帮助企业在其工作流程中定位 VBScript 实例。其中一项建议是使用微软的 SysMon(系统监视器)实用程序来跟踪 VBScript DLL 并分析与组策略和 PowerShell 脚本相关的依赖关系。

用于扫描的 PowerShell 脚本

为了促进这一转变,微软提供了实用的 PowerShell 脚本。以下是一个可以扫描系统上的 VBScript 文件的脚本:

$pathsToScan = @("C:\Users", "C:\ProgramData", "C:\Scripts") $logPath = "C:\VBSScriptScan\VbsFiles_$(hostname).csv" $results = foreach ($path in $pathsToScan) { if (Test-Path $path) { Get-ChildItem -Path $path -Filter *.vbs -Recurse -ErrorAction SilentlyContinue | Select-Object FullName, LastWriteTime, Length } }

此外,另一个 PowerShell 脚本有助于检测 Microsoft Installer (MSI) 包中嵌入的 VBScript:

Get-ChildItem -Path "C:\MSIRepo"-Recurse -Filter *.msi | ForEach-Object { $msiPath = $_. FullName $sql = "SELECT * FROM CustomAction" $installer = New-Object -ComObject WindowsInstaller. Installer $database = $installer. GetType().InvokeMember("OpenDatabase", "InvokeMethod", $null, $installer, @($msiPath, 0)) $view = $database. OpenView($sql) $view. Execute() $record = $view. Fetch() while ($record -ne $null) { $actionName = $record. StringData(1) $actionType = [int]$record. StringData(2) if ($actionType -eq 6 -or $actionType -eq 38 -or $actionType -eq 50) { Write-Output "⚠ VBScript Custom Action: $actionName in $msiPath" } $record = $view. Fetch() } }

禁用 VBScript 的步骤

一旦在企业系统中识别出 VBScript,为了禁用它,Microsoft 建议使用以下命令:

使用以下部署映像服务和管理 (DISM) 命令来禁用它:Dism /Online /Remove-Capability /CapabilityName:VBSCRIPT~~~~

此命令可以通过 Microsoft Intune、GPO 启动脚本或 Microsoft 配置管理器在整个组织中部署。

执行此命令将阻止所有进程使用 VBScript,从而导致静默失败或错误通知。如需了解更多信息,您可以阅读微软关于此主题的详细博客文章

来源和图片

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注