为什么我建议立即停用 VBScript

前言

大家好,我是 canmick。今天打开电脑时,收到一个 Window 10 即将停止维护的消息弹窗,起初以为是垃圾软件推送的小弹窗广告,于是半信半疑点开了微软官网一看,原来是真的。那跟我们程序员有啥关系?

还真有点关系,比如笔者上周处理了一个线上问题就与 Window 11 相关。

出问题的功能依赖 regedit 库获取 Windows 注册表,regedit 库底层使用 VBScript 脚本,然而 Window 11 24H2 起不再内置 VBScript 支持,这不就炸了吗。

客户端修复发版需要一段时间,解决不了燃眉之急,幸好 Window 11 还支持手动安装 VBScirpt,于是网上找一份安装指引给用户,相关指引如下

安装 VBScript 要求管理员账户,这操作流程看起来倒挺简单的嘛。但实际呢,很多电脑小白连电脑设置都不知道在哪,更别说什么是管理员账户,遇到问题的客户还得一个个远程指导🤣。

我的老板看了都直摇头,叫我赶紧想办法换掉这个库。我只能连夜调研选型把 regedit 换成了 registry-js,替换过程还踩了个坑,详见这篇文章《记一次无语的 Vite 构建配置问题排查》

VBScript 有什么错

网上简单搜索了一下,主要是由于 Microsoft 潜在的安全漏洞问题。

VBScript 引擎本身已多年未获微软实质性更新。随着 Window 10 停止支持,新发现的任何 VBScript 相关漏洞(包括可能影响调用它的宿主环境如 IE、WScript 的漏洞)将不再获得安全补丁,恶意脚本或文档就可以利用 VBScript 漏洞进行攻击,巴拉巴拉的....

总结一句话:立即停用 VBScript

VBScript 迁移

历史项目难免会遇到使用 VBScript 的地方,该如何处理?

假如是第三方库,建议搜索其他库进行替换。

假如代码中存在 VBScript 编写的代码,可以尝试往以下方向迁移:

PowerShell

深度集成于 Windows,面向对象,强大的管道和模块化设计,原生支持 .NET,丰富的内置 cmdlet 覆盖系统管理、文件操作、注册表、网络、WMI 等所有 VBScript 场景。 下面为获取某注册表值示例

C#, Go, Rust

这个迁移方向对技术团队有一定要求,但这些语言高性能、内存安全(尤其 Rust),适合构建高性能核心组件。如 registry-js 用的就是 C#

小结

本文先是叙述了某程序因 Window 11 "断供" VBScript 而产生功能异常,再简单介绍了 VBScript 漏洞问题,最后建议开发者们停用 VBScript ,向 PowerShell、C#、Go、 Rust 等方向迁移。

笔者不才,能想到的点子不多,欢迎大佬们评论区补充更多的迁移方案🥰

相关推荐
于慨1 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz1 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
从前慢丶1 天前
前端交互规范(Web 端)
前端
CHU7290351 天前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing1 天前
Page-agent MCP结构
前端·人工智能
王霸天1 天前
💥别再抄网上的Scale缩放代码了!50行源码教你写一个永不翻车的大屏适配
前端·vue.js·数据可视化
小领航1 天前
用 Three.js + Vue 3 打造炫酷的 3D 行政地图可视化组件
前端·github
@大迁世界1 天前
2026年React大洗牌:React Hooks 将迎来重大升级
前端·javascript·react.js·前端框架·ecmascript
PieroPc1 天前
一个功能强大的 Web 端标签设计和打印工具,支持服务器端直接打印到局域网打印机。Fastapi + html
前端·html·fastapi
悟空瞎说1 天前
深入 Vue3 响应式:为什么有的要加.value,有的不用?从设计到源码彻底讲透
前端·vue.js