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

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

相关推荐
autumnTop5 分钟前
为什么访问不了同事的服务器或者ping不通地址了?
前端·后端·程序员
weixin_4433533127 分钟前
小红书帖子评论的nodejs爬虫脚本
前端·爬虫
yzzzzzzzzzzzzzzzzz29 分钟前
HTML 常用标签介绍
前端·html
Wcy307651906631 分钟前
web前端第二次作业
前端·javascript·css
北京_宏哥32 分钟前
Python零基础从入门到精通详细教程11 - python数据类型之数字(Number)-浮点型(float)详解
前端·python·面试
waterHBO34 分钟前
css 模拟一个动画效果,消息堆叠。
前端·css
艾小码1 小时前
JavaScript 排序完全指南:从基础到高阶实战
前端·javascript·排序算法
前端加油站1 小时前
在 cursor 成为流行的开发方式后,作为普通开发我们能做什么
前端
Cache技术分享1 小时前
163. Java Lambda 表达式 - Function 的链式组合
前端·后端
Zestia1 小时前
页面点击跳转源代码?——element-jumper插件实现
前端·javascript