在64位IIS下,网站使用32位COM组件导致“800a01ad” ActiveX component can't create object错误的问题
总是要面对一些老ASP系统升级到ASP.NET的问题,由于各种原因,目前需要将ASP 和ASP.NET 整合到一个项目里使用。由于开发机是64位Windows 7,自然配备了64位IIS,将原来老系统的COM组件注册之后,在IIS上运行ASP代码的时候,在创建COM组件对象处,产生如下错误:
Microsoft VBScript runtime error '800a01ad'
ActiveX component can't create object
经过一番摸索之后,利用强大的Process Monitor 工具,监控w3wp.exe的操作,发现它试图在类似HKCR\CLSID\路径下寻找COM组件信息,但是因为COM是32位的,所以其被注册到HKEY_CLASSES_ROOT\Wow6432Node\CLSID\这样的位置,而在寻找时,应该寻找HKCR\Wow6432Node\CLSID\这个位置才会找到。
那么怎么让IIS找到正确的COM信息位置呢?办法就是让IIS可以工作在32位模式下,具体方法是,找到网站所使用的App pool,然后选择“Advanced Settings”,然后设置“Enable 32-Bit Applications”为true就好了。设置后,再监控w3wp,发现现在已经在HKCR\Wow6432Node\CLSID下面寻找COM注册信息了,因此问题得以解决。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix