微软官方指南显示 Windows 11 24H2 25H2 中提前禁用 VBScript
微软时不时会关闭其应用程序中的各种功能,该公司在今年早些时候详细解释了这对用户的好处。
最近,微软宣布放弃必应搜索 API 和 Edge 的另一项功能,转而使用更标准、更安全的功能。该公司还确认了 Windows 硬件驱动程序的一些重大变化,宣布废弃 Windows 设备元数据和 Windows 元数据与互联网服务(WMIS)。同时,Excel 功能也将消失,因为该公司认为不值得花费精力和成本来维护对它的支持。
同样,移除 VBScript 也是微软关注已久的问题。早在 2023 年 5 月,该公司就首次表达了移除 VBScript 的意愿。同年 10 月,微软正式将其淘汰。
不过,如果你还不知道,宣布弃用并不意味着该功能一夜之间自动消失。相反,该功能会被标记为移除,并进入 “弃用阶段”。正如微软之前解释的那样,该阶段旨在帮助依赖该功能的组织继续前进。
因此,微软提供了 2024 年 5 月的事件时间表,并将弃用阶段分为三个部分。第一阶段仍在进行中,因为 VBScript 仍作为按需功能 (FOD) 默认启用。
不过这也是事情变得棘手的地方。微软之前在其时间表中提到,VBScript FOD 将于 2027 年左右禁用,这将与 2026 年和 2027 年的 Windows 更新相吻合。
微软今天发布的有关 VBScript 移除的最新指导文章表明,FOD 可访问性可能会在 24H2 版本本身或 25H2 版本中提前移除(25H2 版本已有蛛丝马迹)。该公司写道:
在 VBScript 目前的废弃阶段,它可作为按需功能 (FOD) 提供,并在 Windows 11 24H2 版本中默认启用。在这些版本和未来的操作系统默认禁用 VBScript 之前,关键是要确定企业环境中仍在使用 vbscript.dll 的位置和方式。
因此,这一措辞似乎暗示着 VBScript 可能会作为默认 FOD 提前消失,这也可能是该公司分享这一新指南以帮助公司更快发展的原因。无论如何,现在是 “在 Windows 11 上主动禁用 VBScript ”的时候了。
在这份指南中,微软强调了四种机制,可以帮助企业检测工作流程中 VBScript 的使用情况,以便采取下一步必要措施,删除所有基于 VBScript 的动态链接库(.dll 文件)。
该公司建议使用其官方的 SysMon(系统监视器)实用程序来跟踪 VBScript 动态链接库,并查看 VBScript 的依赖关系,如与登录、注销、启动、关闭、计划任务相关的组策略和 PowerShell 脚本,以及用于调用 VBScript 的脚本。
为了提供帮助,微软还提供了一个 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
}
}
$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()
}
如上所述,微软建议从现在起在 Windows 11 上主动禁用 VBScript。该公司解释了一旦企业检测到其系统中使用了 VBScript,该如何禁用:
使用以下部署映像服务和管理 (DISM) 命令执行此作:
Dism /Online /Remove-Capability /CapabilityName:VBSCRIPT~~~~
使用 Microsoft Intune、GPO 启动脚本或 Microsoft Configuration Manager 在您的队列中部署此命令。
运行上述 DISM 命令后,微软表示 VBScript 将被禁用。因此,所有试图使用 VBScript 的进程都将被阻止,并将 “无声或出错地失败”。你可以在微软官方技术社区网站上阅读这篇博文:
https://techcommunity.microsoft.com/blog/windows-itpro-blog/vbscript-deprecation-detection-strategies-for-windows/4414325
评论功能已关闭