从 x64 .NET 访问 x86 COM

2023-11-23

我有一个 x64 服务器,因为我的库被编译为 AnyCPU,所以它在 x64 下运行。我们需要访问在 x86 下注册的 COM 组件。我对 COM 的了解还不够,我的谷歌搜索也没有任何结果。

问题:对于 COM 组件,我可以使用从 x64 回到 x86 的符号注册表链接吗?我还需要在 x64 下注册 COM 组件吗?我可以(这里有任何声明...)吗?

Thanks.


如果组件运行的是 x64-native,则它无法在进程中加载​​ 32 位 COM 服务器,因为它是错误的进程类型。有几种可能的解决方案:

  1. 如果可以的话,构建一个 64 位版本的 COM 代码(当然,它会在 64 位注册表中注册自身)。这是最干净的解决方案,但如果您没有 COM 服务器的代码,则可能无法实现。

  2. 将 .NET 组件作为 32 位 x86 而不是 x64 运行。我想你已经考虑过并出于某种原因拒绝了这一点。

  3. 使用以下命令在进程外托管 COM 组件COM代理DLL主机.exe。这将使对 COM 服务器的调用变得非常非常慢(它们现在将是进程间 Windows 消息而不是本机函数调用),但在其他方面是透明的(您不必执行任何特殊操作)。

    如果服务器需要自定义代理存根而不是使用普通的 oleaut32 代理存根(尽管非常罕见),那么这可能不是一种选择,因为不会有 64 位版本的代理可用。只要能使用普通的OLE编组,就可以注册它以进行代理激活.

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

从 x64 .NET 访问 x86 COM 的相关文章

  • 检测笔记本电脑盖子的关闭和打开

    是否可以检测笔记本电脑的盖子何时打开或关闭 从我读到的内容来看 这是不可能的 但 SO 之前已经帮助我完成了不可能的任务 我发现唯一可能朝着正确方向的事情是关于报告电源按钮所需的 IOCTL 的 MSDN 博客文章 https learn
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • 用户如何在winforms运行时调整控件大小

    假设我有一个图片框 现在我想要的是用户应该能够随意调整图片框的大小 但是我不知道如何开始做这件事 我搜索过互联网 但信息很少 有人至少可以指导我从哪里开始吗 这很容易做到 Windows 中的每个窗口都具有与生俱来的可调整大小的能力 它刚刚
  • .NET 中的错误和异常有什么区别?

    您能向我解释一下错误和异常之间的区别吗 一个例外是利用语言语义的类 正如其他人所说 异常会中断堆栈的执行 直到被捕获 一个例外can用于传达错误 但更一般地用于传达发生了异常情况 另一方面 错误可能是异常的 也可能不是异常的 错误有以下几种
  • C++/CLI 中的 Lambda 表达式

    如何在 C CLI 中使用 lambda 表达式 在 C 中 lambda 实际上只是用于创建委托的语法糖 C CLI支持代表 http www functionx com cppcli classes Lesson15c htm 因此您仍
  • 多线程 Web 应用程序

    我知道有很多情况都是在应用程序中使用多线程的好例子 但是什么时候最好在 net Web 应用程序中使用多线程 Web 应用程序几乎肯定已经由托管环境 IIS 等 实现多线程化 如果您的页面受 CPU 限制 并且想要使用多个核心 那么可以说多
  • 打印“X”个字符数与“X”字符串长度的所有可能组合(暴力破解)

    我正在尝试编写一个单词组合生成器 我的意思是打印 X 个字符数与 X 字符串长度的所有可能组合 首先 我需要说的是 我在 StackOverFlow 中看到了一个关于这个问题的问题 其中有很多单词生成器的答案来执行此操作 在不同的语言上 但
  • Task.Run 作为反模式?

    我正在将 SQLite NET PCL 库用于我的 WinRT 项目SQliteAsyncConnection类 它提供经典的异步版本SQLiteConnection方法 然而 就该项目而言Github页面 https github com
  • SecurityAction.RequestMinimum 在 .Net 4.0 中已过时

    最近 我们的 Net 客户端库正在升级以针对 Net 4 0 进行编译 将目标框架更改为4 0后 应用程序出现一些编译错误 In AssemblyInfo cs assembly SecurityPermission SecurityAct
  • 从共享网络文件夹运行的 .NET 应用程序的性能损失

    从共享网络文件夹运行 NET 4 0 应用程序是否有任何性能损失 我发现哪个应用程序启动速度较慢 但 在使用时没有注意到任何变慢 但不确定 当通过网络运行可执行文件时 Windows 不会在应用程序启动时通过网络传输整个应用程序 这样做是为
  • Visual Studio '17 未在参考管理器中显示程序集

    我遇到的问题是 我似乎无法弄清楚如何添加对某些解决方案的引用 在我从 Visual Studio 17 开始的大多数解决方案中 我在解决方案资源管理器中看到 引用 但例如对于 asp net core web api 我得到 依赖项 每当解
  • 获取 Windows 窗体应用程序的执行目录的路径

    我想获取 Windows 窗体应用程序的执行目录的路径 即可执行文件所在的目录 有谁知道 NET 中的内置方法可以做到这一点 在VB NET中 Dim directory as String My Application Info Dire
  • Windows 窗体中的提示对话框

    我在用System Windows Forms但奇怪的是没有能力创造它们 如何在没有 javascript 的情况下获得类似 javascript 提示对话框的内容 MessageBox 很好 但是用户无法输入内容 我希望用户输入任何可能的
  • Global.asax 和 Error.aspx 中的 ASP.NET MVC 错误日志记录

    我正在创建一个 ASP NET MVC 应用程序 我需要在两个地方处理异常 Global asax vb 文件 Public Class MvcApplication Inherits System Web HttpApplication
  • VB.net 应用程序保留以前的版本

    我有一个正在发布的 Visual Basic 项目 并且每次都会增加版本号 当我安装新版本时 它会打开 但一旦应用程序重新启动 它似乎就会恢复到以前的版本 我不知道为什么 尝试更新发布应用程序时所需的最低版本 转到应用程序属性 gt 发布
  • URL 中的点 (.) 字符错误

    当我点击编辑具有此 url 的用户时遇到问题ASP NET MVC 3项目 http domain com 8089 User EditUser username surname IDUser e11a621p df11 4687 9903
  • WinRT 不支持 Assembly.GetCallingAssembly,但适用于可移植类库?

    我需要获取有关调用我的组件的程序集的一些元数据 因此 使用Assembly GetCallingAssembly 似乎是天作之合 但是 我发现它在除 Windows 应用商店之外的任何地方都适用 支持的地方 手机7 0 http msdn
  • 在哪里使用 EF6 订阅 ObjectMaterialized?

    我正在尝试将我的上下文订阅到以下 OnjectMaterialized 事件this https stackoverflow com a 3756842 2835713 像这样 IObjectContextAdapter this Obje
  • 为什么 .Net 框架指南建议您不要使用 ref/out 参数?

    显然 他们很 混乱 这是认真的原因吗 你还能想到其他的吗 你见过有多少开发人员并不真正理解 ref out 吗 我在真正需要的地方使用它们 但在其他地方则不然 它们通常仅在您想有效返回两个或多个值时才有用 在这种情况下它至少值得thinki
  • Parallel.ForEach - 优雅取消

    关于等待任务完成和线程同步的主题 我目前有一个迭代 我已将其包含在 Parallel ForEach 中 在下面的示例中 我在评论中提出了一些关于如何最好地处理循环的优雅终止的问题 NET 4 0 private void myFuncti

随机推荐

  • Eclipse 中的 Grails 2.2.0 支持

    我正在尝试使用 eclipse jee juno 创建一个 grails 2 2 0 项目 它给了我一个错误 项目期望的 Groovy 编译器级别与工作区编译器级别不匹配 项目编译级别为 1 8 X 工作区编译器级别为 1 7 X 转到项目
  • Apache POI 加载 XSSFWorkbook 类时出错

    我正在尝试编写一个与 Excel 文档一起使用的程序 但 HSSF 格式对于我的要求来说太小了 我正在尝试转向 XSSF 但在尝试使用它时不断出现错误 我设法通过将 xmlbeans 2 3 0 jar 和 dom4j 1 6 jar 添加
  • 使用 proc_open 时从 STDIN 管道读取

    我正在尝试制作一个网站 人们可以在线编译和运行他们的代码 因此我们需要找到一种交互式方式让用户发送指令 其实大家首先想到的是exec or system 但是当用户想要输入某物时 这种方式就行不通了 所以我们必须使用proc open 例如
  • 如何以正确的顺序安装多个 .whl 文件

    我最近发现自己处于必须在没有互联网连接的机器上安装 python 项目的所有依赖项 20 的情况 我用了pip download 得到所有的 whl文件并手动传输它们 直到现在 我才完全欣赏 pip 的天才 以及它如何自行计算出依赖关系树并
  • 如何检查变量的类型是否与变量中存储的类型匹配

    User u new User Type t typeof User u is User gt returns true u is t gt compilation error 如何以这种方式测试某个变量是否属于某种类型 其他答案都有重大遗
  • 如何将 JFrame 嵌入到 JavaFX 2.0 应用程序中?

    我在 stackoverflow 上广泛搜索了有关该主题的帮助 但我发现的问答很旧 并且当前版本的 JDK 的答案已更改 我目前使用的是 7u51 请注意 我一开始就不是非常精通 Swing 但我相信我了解基础知识 我一直更关注应用程序内部
  • 在订单电子邮件模板中添加自定义属性 - Magento

    我创建了一个 公司名称 属性 该属性会添加到我的客户帐户信息中 并且是必填字段 它会在注册 表单和编辑页面上得到很好的填写 并且也会显示在后端的客户网格上 但是 我无法在任何订单电子邮件模板中显示公司名称 我相信这是因为我的订单表中既没有任
  • 在哪里可以找到 LDAP Active Directory 消息的列表及其含义?

    我收到错误 LDAPException 无效凭证 49 无效凭证LDAPException 服务器消息 80090308 LdapErr DSID 0C0903A9 注释 AcceptSecurityContext 错误 数据 52e v1
  • LazyVGrid 内的 NavigationLink 循环背面的所有条目,SwiftUI

    我有一个图像网格 点击的每个图像都应在 NavigationView 上推送一个包含图像详细信息的视图 导航链接按预期工作 但是当我按后退按钮时 它会打开下一个图像 依此类推 直到循环所有图像 到底是怎么回事 这是View struct I
  • Google 地图在 Android Pie 上崩溃

    我正在运行最新版本的 Android Pie 的 Google Pixel 上测试 Google 地图 Caused by java lang ClassNotFoundException Didn t find class org apa
  • Android adb 返回“未找到设备”错误

    当我通过 USB 将 HTC Desire S 手机插入 PC Win7 时 设备管理器会显示一个名为 基于 HTC 远程 NDIS 的设备 的网络适配器 尝试使用 adb 进行端口映射 会发生这种情况 7 22 09 68 gt C Pr
  • Android Studio 中“android.database.sqlite.SQLitepenhelper 中没有可用的默认构造函数”

    尝试使用 SQLiteOpenHelper 扩展类 但出现此错误 android database sqlite SQLitepenhelper 中没有可用的默认构造函数 以及其他 无法解析符号类别 注意 class DbHelper ex
  • 条件不等于时触发

    我需要一个Style在WPF下 当满足多个条件时设置多个属性 然而 我的条件之一是类型Not Equal To 我应该如何更改以下内容Style这样条件就变成了Not Equal To 甚至可以在没有的情况下实现吗 IValueConver
  • Oracle 假脱机到文件中的最大列宽

    我有一个这样的脚本 SET ECHO OFF SET FEEDBACK OFF SET VERIFY OFF SET HEADING OFF SET TERMOUT OFF SET TRIMOUT ON SET TRIMSPOOL ON S
  • Android:什么时候用 finish() 结束课程?

    我经常看到以以下结尾的类的例子finish 但绝对不总是如此 我的问题是你应该什么时候结束课程finish 它到底做了什么 用后退按钮结束课程和用后退按钮结束课程有什么区别finish 提前致谢 finish 可以调用来杀死 销毁 一个 A
  • 有没有办法将公共方法的访问限制为 C# 中的特定类?

    我有一个带有 C 中公共方法的 A 类 我想只允许 B 类访问此方法 这可能吗 UPDATE 这就是我想做的 public class Category public int NumberOfInactiveProducts get pub
  • 我需要向 Ninject.Web.MVC 3.0 注册 Ninject.OnePerRequestModule 吗?

    我在 MVC4 应用程序中使用 Ninject 进行 DI 和 Ninject MVC3 扩展 特别是版本 3 0 0 6 正在阅读文档在 Ninject 的 wiki 上 似乎使用创建的对象的生命周期InRequestScope实际上是由
  • Eclipse Neon HTTP 代理身份验证需要错误

    当我转到 安装新软件 并选择更新站点或 转到 可用软件站点 并单击 重新加载 我收到 需要 HTTP 代理身份验证 错误 我搜索过网络 并尝试了找到的建议 例如设置eclipse ini with vmargs Djava net pref
  • 如何将一个结构转换为另一个具有完全相同字段名称和类型的结构?

    我有两个具有相同名称 字段 和字段类型 的相同结构 它们位于不同的模块中 它们是由派生宏构造的 并且希望轻松地从一种转换为另一种 e g mod a struct A field1 String field2 String mod b st
  • 从 x64 .NET 访问 x86 COM

    我有一个 x64 服务器 因为我的库被编译为 AnyCPU 所以它在 x64 下运行 我们需要访问在 x86 下注册的 COM 组件 我对 COM 的了解还不够 我的谷歌搜索也没有任何结果 问题 对于 COM 组件 我可以使用从 x64 回