迁移遗留ASP应用至Windows Server 2022时VBScript.Encrypt组件缺失问题求助
兄弟,我之前帮客户处理过类似的遗留ASP迁移问题,给你几个实用的方向试试,不用麻烦法务找原厂商:
先从旧服务器定位核心组件
你提到用cygwin的grep找文件,其实用Windows自带的命令行效率更高。VBScript.Encrypt对应的核心组件一般是screnc.dll,这是微软Script Encoder工具的运行时文件。在旧的Windows Server 2008 R2上打开管理员命令行,执行这个命令搜索:dir /s C:\screnc.dll通常这个文件会在
C:\Windows\System32(64位系统)或者C:\Windows\SysWOW64(32位应用对应的组件目录)里。如果找不到,也可以检查旧服务器的已安装程序和更新,找和“Script Encoder”或“VBScript加密”相关的条目,对应的安装目录里应该能找到这个dll。复制并注册组件到新服务器
找到screnc.dll后,把它复制到新服务器的对应目录:- 如果你的ASP应用是64位,放到
C:\Windows\System32; - 如果是32位应用,放到
C:\Windows\SysWOW64。
然后用管理员命令行注册组件:
# 64位组件注册 regsvr32 C:\Windows\System32\screnc.dll # 32位组件注册(64位系统下) %systemroot%\SysWOW64\regsvr32.exe C:\Windows\SysWOW64\screnc.dll注册成功会弹出提示框确认,别忽略这个步骤,不注册的话IIS没法识别加密的脚本。
- 如果你的ASP应用是64位,放到
检查新服务器的IIS配置
别忘确认新服务器的IIS已经装好ASP支持:- 打开服务器管理器,添加Web服务器(IIS)角色,确保勾选了“ASP”组件;
- 检查应用程序池的设置,如果你的遗留应用是32位的,一定要在应用程序池的高级设置里开启“启用32位应用程序”选项,否则64位环境下可能加载不了32位的
screnc.dll。
特殊情况的备选方案
如果上面的方法都不行,有可能原厂商用的是第三方加密工具而不是微软的标准Script Encoder。这时候可以试试在旧服务器上用Process Monitor工具跟踪ASP进程加载的dll文件,当访问加密的ASP页面时,Process Monitor会记录所有加载的组件,你就能找到对应的加密组件文件了,然后复制到新服务器注册即可。
备注:内容来源于stack exchange,提问作者Joseph Quinn

