为什么我建议立即停用 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 等方向迁移。

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

相关推荐
一点一木3 小时前
深度体验TRAE SOLO移动端7天:作为独立开发者,我把工作流揣进了兜里
前端·人工智能·trae
天外飞雨道沧桑4 小时前
TypeScript 中 omit 和 record 用法
前端·javascript·typescript
Lee川4 小时前
mini-cursor 揭秘:从 Tool 定义到 Agent 循环的完整实现
前端·人工智能·后端
canonical_entropy5 小时前
从 Spec-Driven Development 到 Attractor-Guided Engineering
前端·aigc·ai编程
研☆香5 小时前
聊聊前端页面的三种长度单位
前端
给钱,谢谢!5 小时前
React + PixiJS 实现果园成长页:从状态机到浇水动画
前端·react.js·前端框架
暗冰ཏོ6 小时前
VUE面试题大全
前端·javascript·vue.js·面试
次元工程师!6 小时前
LangFlow开发(三)—Bundles组件架构设计(3W+字详细讲解)
java·前端·python·低代码·langflow
Bug-制造者7 小时前
现代Web应用全栈开发:从架构设计到部署落地实战
前端
青春喂了后端8 小时前
IntelliGit 前端状态层重构:把一个全局 Store 拆成清晰的状态边界
前端·重构·状态模式