Windows Server 2019缺失VBScript.Encrypt致ASP迁移报错求助
解决Windows Server 2019中VBScript.Encrypt ASP报错的方案
一、深挖旧服务器的隐藏处理逻辑
旧服务器无对应ProgID却能运行,大概率存在自定义脚本处理机制:
- 检查旧服务器IIS站点的脚本映射:查看
.asp的处理程序是否不是默认的asp.dll,如果是自定义DLL,复制该文件到新服务器,用regsvr32.exe "C:\路径\自定义.dll"注册 - 排查旧服务器上的可疑文件:搜索含
Encrypt、VBScript关键词的DLL/EXE,尤其是IIS安装目录、网站根目录下的文件,这些可能是第三方加密引擎 - 检查旧服务器的
global.asa文件或站点级的ASP全局脚本,看是否包含对加密内容的解码预处理逻辑
二、尝试解码加密的ASP内容
既然scrdec18.exe不支持Encrypt格式,换以下方式:
- 本地使用多格式VBScript解码器工具(优先选本地运行的工具,避免安全风险),尝试解密脚本内容
- 在旧服务器上导出明文脚本:新建ASP页面,读取加密ASP文件的内容,调用旧环境中隐含的解码函数(比如旧服务器可能存在未注册但能调用的解密方法),输出明文后保存为普通
.asp文件 - 手动分析加密内容:查看ASP文件的二进制头部,是否有固定加密标识,尝试逆向推导解密规则
三、替换脚本声明并兼容运行
- 若解码成功,批量替换所有ASP文件顶部的
<%@ LANGUAGE = VBScript.Encrypt %>为<%@ LANGUAGE = VBScript %>,然后在新服务器测试 - 若无法解码,可自定义脚本引擎:编写COM组件实现ASP脚本引擎接口,对
VBScript.Encrypt格式内容解密后转交给标准VBScript引擎处理,注册组件时将ProgID设为VBScript.Encrypt
四、调整新服务器ASP环境配置
- 确保IIS的ASP功能完整安装:服务器管理器→添加角色和功能→Web服务器(IIS)→应用程序开发,勾选ASP和ISAPI扩展
- 配置应用程序池为经典模式,.NET版本选择“无托管代码”,身份设置为与旧服务器一致(比如本地系统)
- 开启ASP设置中的“启用父路径”选项,适配老旧ASP脚本的路径写法
内容的提问来源于stack exchange,提问作者Joseph Quinn
相关产品推荐
相关产品推荐

