将 COM+ 应用程序从 Windows 2003 移植到 Windows 2008 Server 时出现的问题

2024-01-12

我们正在将应用程序从 Windows Server 2003 迁移到 Windows Server 2008 R2。我在迁移方面面临一些问题。

我在Windows Server 2008 R2中部署了许多COM+组件(32位)和DCOM组件(32位)。这些 COM+ 和 DCOM 组件是 VC++ 代码。

我在同一台服务器上部署了一个 32 位 .net 3.5 服务,它调用上面提到的 COM+ 组件。

每当我尝试启动服务时,它都不会启动并在事件日志中抛出多个错误。

我们得到的主要错误是远程过程调用失败错误**。(**远程过程调用失败。(来自 HRESULT 的异常:0x800706BE))**** 根据调试期间的观察,创建了 COM 对象,但是当调用某个方法时,会引发远程过程异常。

在 Win 2003 Server Box 中同样可以正常工作。

ERROR

第一个错误:

错误应用程序名称:dllhost.exe,版本:6.1.7600.16385,时间戳:0x4a5bc6b7

错误模块名称:KERNELBASE.dll,版本:6.1.7600.16385,时间戳:0x4a5bdbdf

异常代码:0xe06d7363

故障偏移:0x0000b727

错误进程 ID:0x8ac

错误的应用程序启动时间:0x01cb437094216ea7

错误应用程序路径: C:\Windows\SysWOW64\dllhost.exe

错误模块路径: C:\Windows\syswow64\KERNELBASE.dll

报告 ID:d25f6a31-af63-11df-8252-0050568e251b

第二个错误:

系统已调用自定义组件,但该组件已失败并生成异常。这表明自定义组件存在问题。通知该组件的开发人员发生了故障并向他们提供以下信息。

服务器应用程序 ID:{727318BC-A725-4ED6-8DDD-9DE80262D3CA}

服务器应用程序实例 ID:

{739972C1-74DA-4169-A093-32AAAA965EC9}

服务器应用程序名称:

此错误的严重性已导致进程终止。

例外:E06D7363

第三个错误:

故障桶,类型0

活动名称:APPPCRASH

回复: 不可用

出租车编号:0

问题签名:

P1:dllhost.exe

P2:6.1.7600.16385

P3:4a5bc6b7

P4:KERNELBASE.dll

P5:6.1.7600.16385

P6:4a5bdbdf

P7:e06d7363

P8:0000b727

P9:

P10:

附加的文件:

这些文件可以在这里找到:

C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c

分析符号:

重新检查解决方案:0

报告 ID:d25f6a31-af63-11df-8252-0050568e251b

第四个错误:

故障桶,类型0

活动名称:APPPCRASH

回复: 不可用

出租车编号:0

问题签名:

P1:dllhost.exe

P2:6.1.7600.16385

P3:4a5bc6b7

P4:KERNELBASE.dll

P5:6.1.7600.16385

P6:4a5bdbdf

P7:e06d7363

P8:0000b727

P9:

P10:

附加的文件:

这些文件可以在这里找到:

C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_dllhost.exe_58c2666ce94b9901a2cc454f2e8cd8cc5742421_085d298c

分析符号:

重新检查解决方案:0

报告 ID:d25f6a31-af63-11df-8252-0050568e251b

报告状态:0

第5个错误:

服务无法启动。 System.Runtime.InteropServices.COMException (0x800706BE):远程过程调用失败。 (HRESULT 异常:0x800706BE)

我们根据分析检查了以下内容:

1. 权限问题- 检查Everyone、经过身份验证的用户、IWAM_ServerName 和IUSR_ServerName 是否具有完全控制权。在论坛中看到他们应该对某些系统文件夹具有 NTFS 读取/执行权限。不知道如何检查这个。

2.DLL地狱问题- 检查了注册,一切似乎都很好。

3. 处理“位数”问题- 检查注册表,所有条目均位于 WoW6432 下,所有应用程序组件均为 32 位。没有对 64 位组件的进程内调用。还使用 COM 来实现 32 个应用程序。

4. 防火墙问题- 该服务与 COM 组件位于同一台机器上。我们是否应该更改一些与 MSTDC 安全、高级防火墙配置相关的设置(例如启用 COM+ 入站)?我们不确定,因为我们是第一次配置服务器。

  1. 启用“运行 32 位应用程序”复选框

但以上都没有帮助。

此外,我们正在尝试使用示例组件来重现该问题。我们创建了一个 .NET 组件并将其部署在 COM+ 中。尝试通过 VB 脚本和 C# 控制台应用程序访问它,它在 Windows 2003 框中工作正常。同样的情况在 Windows 2008 Server 中不起作用。我们没有收到 RPC 错误,而是收到以下错误:

vb脚本错误:800a01ad activex 组件无法创建对象

.net 客户端调用 com :类未注册:HRESULT 0x80040154(REGDB_E_CLASSNOTREG)

经过分析发现,这些问题可能是由于权限问题、dll hell或者进程‘bitness’问题。

如果有人可以帮助我们解决这个问题,那就太好了。

谢谢, 维杰


这都是相同的崩溃原因。您的组件引发了 C++ 异常,并且没有使用 catch 语句捕获它。使用调试器找出抛出异常的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 COM+ 应用程序从 Windows 2003 移植到 Windows 2008 Server 时出现的问题 的相关文章

  • 为什么我不能在 Python 的新线程中创建 COM 对象?

    我正在尝试在 Python 的新线程中从 dll 创建 COM 对象 这样我就可以在该线程中运行消息泵 from comtypes client import CreateObject import threading class Mess
  • Excel 2013 COM API 在服务帐户下挂起 ExportAsFixedFormat

    我有一个 NET Windows 服务 它调用 Excel 2013 COM API 以在 PDF 上导出 Excel 文档 我已尝试使用在两个不同域帐户下运行的 Windows 服务来执行此代码 这两个帐户都是运行代码的计算机上的本地管理
  • Python 仪器驱动程序

    我是一名实验物理学家 并且是Python http en wikipedia org wiki Python 28programming language 29 我发现它非常适合数据分析和脚本编写 实际上我还用它来连接实验室仪器 网络分析仪
  • 从delphi应用程序调用.net4.0 com服务器后出现错误异常

    我们正在将代码库从 BDS2006 迁移到 Rad Studio XE 我们发现了一些非常奇怪的行为 如果我们在从 Net4 0 中实现的 COM 服务器创建一些对象后进行无效的浮点运算 即除以零 我们不会没有得到正常异常 即 EDivis
  • 我刚刚在 Visual Basic 中运行的 COM 对象的 CLSID 是什么

    我需要知道我刚刚运行的 COM 对象的 CLSIDCreateObject xxx xxx 我怎么才能得到它 蒂亚 拉法尔 我认为您无法直接从 VB 本身获取该信息 例如 作为调用的副作用或次要结果 CreateObject 但你可以阅读注
  • 在服务器桌面会话上捕获屏幕

    我开发了一个 GUI 测试框架 可以按计划对我们公司网站进行集成测试 当出现问题时 它会截取桌面等内容 它在专用 Windows Server 2008 上的登录用户上运行 无人值守 问题是在我已断开远程桌面会话连接的桌面上截取屏幕截图 我
  • 使用 pythoncom 在 Python 进程之间编组 COM 对象

    我希望有人可以帮助我从 Python 进行编组跨进程调用到 Excel 我有一个通过 Python 启动的 Excel 会话 我知道当需要从单独的 Python 进程访问它时 该会话将会启动并运行 我已经使用编组让一切按预期工作CoMars
  • 每个新的 COM 类都必须重新实现 IUnknown 接口吗?

    抱歉 如果这个问题对每个人来说都是显而易见的 但我对 COM 很陌生 从教程中我看到这里http www codeguru com cpp com tech activex tutorials article php c5567 http
  • C# 组件事件?

    我正在尝试编写一个将公开事件的 C 组件 该组件将由非托管 C 应用程序导入 根据一些教程 我想出了这段代码 针对 C 端 namespace COMTest ComVisible true Guid 02271CDF BDB9 4cfe
  • COM+ 应用程序死锁故障排除

    我正在尝试对间歇性死锁的 COM 应用程序进行故障排除 上次锁定时 我能够获取 dllhost 进程的用户模式转储并使用 WinDbg 对其进行分析 检查完所有线程和锁后 一切都归结为该线程拥有的关键部分 ChildEBP RetAddr
  • 当应用程序继续运行时,如何清理 .NET 中的 COM 引用?

    我正在开发一个 NET 程序 该程序启动 Excel 的新实例 执行一些工作 然后结束 但必须让 Excel 保持运行 稍后 当程序再次运行时 它将尝试挂钩到前一个实例 在这种情况下处理 COM 对象释放的最佳方法是什么 如果我第一次没有对
  • python 的 win32com.client.dispatch() 无法识别注册的 COM 对象

    我正在尝试使用 Python 加载 COM 对象 我正在使用 win32com client Dispatch Name Of Object 加载它 并且 COM 对象已使用 regsvr32 注册 并在 HKLM CLSID 和 HKLM
  • IIS 7.0和win2k8中有多少个不同的地方需要设置日期格式

    我正在尝试使用 win2k8 将旧的经典 asp 应用程序迁移到 IIS 7 0 如果可以的话 我绝对不想更改旧代码 我在日期格式的自定义区域选项中设置了日期格式 在控制面板中的区域和语言选项中将其更改为 dd MMM yy 我仍然收到 C
  • CLSIDFromProgID 成功但 CreateInstace 失败!为什么?

    我正在尝试创建 COM 对象的实例 我有实现该接口的类名 并使用 CLSIDFromProgID 获取 CLSID 因此 自从我获得 CLSID 以来 我想从现在开始一切都会好起来的 但是 当我调用 CreateInstance 并传入 C
  • 如何访问UPnP设备的服务?

    设备 贝尔金 WeMo Switch开发环境 Windows 7 上的 MS VC 2010 我正在尝试使用 Windows 中的 C 枚举 UPnP 设备的服务 我有IUPnPDevice指针并可以访问多个属性 我有IUPnPServic
  • 从 C# 访问 COM vtable

    C 中有没有办法访问 COM 对象的虚拟方法表以获取函数的地址 经过大量搜索和拼凑不同的部分解决方案后 我弄清楚了如何做到这一点 首先 您需要为您尝试访问的对象定义 COM 组件类 ComImport Guid InterfaceType
  • C++ Microsoft:如何将 uuid/guid 与模板专业化相关联

    我想将 uuid guid 与模板专业化相关联 以下代码可用于将 uuid 与非模板接口 类 结构 关联 interface declspec uuid CECA446F 2BE6 4AAC A117 E395F27DF1F8 ITest
  • 如何以编程方式检查 Windows Server 2008 中是否安装了服务器功能?

    具体来说 我正在使用一个仅在安装了 桌面体验 功能的情况下在 Server 2008 上运行的应用程序 并且我希望该应用程序的安装程序验证它的存在 我目前知道的唯一方法是运行ServerManagerCmd query并解析输出 我更喜欢更
  • Pythoncom - 将相同的 COM 对象传递给多个线程

    你好 对于 COM 对象 我是一个完全的初学者 非常感谢任何帮助 我正在开发一个Python程序 该程序应该以客户端 服务器的方式读取传入的MS Word文档 即客户端发送一个请求 一个或多个MS Word文档 服务器使用pythoncom
  • 对于多重继承,使用隐式转换而不是 QueryInterface() 是否合法?

    假设我有一个类实现两个或多个 COM 接口 正如here https stackoverflow com questions 1742848 why exactly do i need an explicit upcast when imp

随机推荐