Windows 更新 KB4338819“无法创建对象”COM 组件

Windows 更新 KB4338819“无法创建对象”COM 组件

我们正在使用 C# COM 组件将我们的 asp 经典应用程序链接到 SQL Server。

自从 Windows 更新以来KB4338819,当我运行应用程序时,我们收到 ASP 异常:

Microsoft JScript runtime error '800a01ad'
Automation server can't create object

执行 ASP 行:

var foo = Server.CreateObject("MyComComponent");

如果我卸载更新,它就可以正常工作。

应用程序池设置为允许 32 位应用程序(值:true)(即使没有更新,如果设置为,false我们也会收到相同的错误)

有想法吗?还有更好的地方可以问这样的问题吗?

谢谢!


更新:

微软承认了这个问题,但他们仍在努力寻找解决方案。同时,他们在这里提出了一些解决方法:

答案1

答案2

我有同样的问题。在 asp 应用程序中,我无法从 .Net 程序集创建 COM 对象(独立于 32 位或 64 位应用程序)。我有 Windows 身份验证和身份 NetworkService。我尝试更改它,但没有帮助。只有一件事有帮助 - 卸载 kb4338819。

答案3

Default.asp 文件
----------------
<% '默认.asp
' 应用程序池设置为允许 32 位应用程序

Response.Write "你好<br/>"

' Microsoft 脚本运行时库( C:\Windows\System32\scrrun.dll 和 C:\Windows\SysWOW64/scrrun.dll )

设置 fso = Server.CreateObject("Scripting.FileSystemObject") ' 确定
设置 d = Server.CreateObject("Scripting.Dictionary") ' 确定

' ADO 的主互操作程序集 (PIA) ( C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\adodb.dll )

设置 conn = Server.CreateObject("ADODB.Connection") ' 确定

'注释 Application_OnStart 的代码时失败(在 Global.asa 中更改后手动重新启动池)
'Windows 更新 KB4338819 是罪魁祸首

设置 arr = Server.CreateObject("System.Collections.ArrayList") '失败
设置 md5 = Server.CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") '失败
设置 utf16 = Server.CreateObject("System.Text.UnicodeEncoding") '失败
设置 sha1 = Server.CreateObject("System.Security.Cryptography.SHA1Managed") '失败

Response.Write“完成”

%>

Global.asa 文件
---------------
<script 语言="vbscript" runat="服务器">

子应用程序_OnStart

    ' 修复 Windows 更新 KB4338819
    ' 修复创建 'System.*' 时出现的 Microsoft VBScript 错误 '800a01ad'
    ' 调用 ToString 方法(始终存在)来强制初始化对象

    修复ArrayList.ToString
    修复_MD5CryptoServiceProvider.ToString
    修复UnicodeEncoding.ToString
    fix_SHA1Managed.ToString

子目录结束
</script>

<object id="fix_ArrayList" runat="server" scope="应用程序" progid="System.Collections.ArrayList"></object>
<object id="fix_MD5CryptoServiceProvider" runat="服务器" scope="应用程序" progid="System.Security.Cryptography.MD5CryptoServiceProvider"></object>
<object id="fix_UnicodeEncoding" runat="服务器" 范围="应用程序" progid="System.Text.UnicodeEncoding"></object>
<object id="fix_SHA1Managed" runat="服务器" 范围="应用程序" progid="System.Security.Cryptography.SHA1Managed"></object>

相关内容