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

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

相关推荐
袁煦丞6 分钟前
数据库设计神器DrawDB:cpolar内网穿透实验室第595个成功挑战
前端·程序员·远程工作
天天扭码14 分钟前
从图片到语音:我是如何用两大模型API打造沉浸式英语学习工具的
前端·人工智能·github
鱼樱前端2 小时前
今天介绍下最新更新的Vite7
前端·vue.js
coder_pig2 小时前
跟🤡杰哥一起学Flutter (三十四、玩转Flutter手势✋)
前端·flutter·harmonyos
万少2 小时前
01-自然壁纸实战教程-免费开放啦
前端
独立开阀者_FwtCoder2 小时前
【Augment】 Augment技巧之 Rewrite Prompt(重写提示) 有神奇的魔法
前端·javascript·github
yuki_uix3 小时前
AI辅助网页设计:从图片到代码的实践探索
前端
我想说一句3 小时前
事件机制与委托:从冒泡捕获到高效编程的奇妙之旅
前端·javascript
陈随易3 小时前
MoonBit助力前端开发,加密&性能两不误,斐波那契测试提高3-4倍
前端·后端·程序员
小飞悟3 小时前
你以为 React 的事件很简单?错了,它暗藏玄机!
前端·javascript·面试