问题标签 [regfreecom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++-cli - 来自 Native C++ 的 CoCreateInstance C++/CLI 类
我已经声明了 C++/CLI 类如下
我想通过本机 C++ COM 创建“testCoClass”(通过#import TLB 文件并使用 CoCreateInstance)我总是收到错误“未注册的类”。如果我使用“Regasm.exe”注册程序集,它工作正常,但我不想注册程序集。
我已按照此博客文章http://blogs.msdn.com/b/cheller/archive/2006/08/24/how-to-embed-a-manifest-in-an-assembly-let-me中的步骤进行操作-count-the-ways.aspx将清单嵌入到程序集中,但它不起作用。(请注意,此方法始终适用于 C# 程序集,但这是 C++/CLI 程序集。
我很感激任何建议。
.net-4.0 - 通过 RegFree Com-visible 包装器初始化 Net .dll 仅从一个特定目录失败
我遇到了一件非常好奇的事情:我们目前有一个混合 VB6/Net 应用程序。VB6 代码通过 Com-Visible Net Wrappers 调用 Net 代码,后者通过 RegFree Com(清单)激活。这很好用,我们的客户可以拥有使用不同版本的网络代码的不同版本的应用程序,并且永远不会发生冲突。
今天令我困惑的是,我们的应用程序的新测试版本未能从 C:\Program Files\OurApp 目录初始化 Net dll。这是之前无数测试版本所在的目录。如果我将相同的应用程序安装到 C:\Program Files\OurApp2 应用程序可以完美运行。
我尝试卸载,我尝试删除整个 C:\Program Files\OurApp 文件夹,但每当我将应用程序重新安装到这个特定文件夹时,网络代码都不会运行。因此,显然在其他地方存储了与 C:\Program Files\OurApp 文件夹有关的 RegFree Com 的一些信息。
我在系统还原后解决了这个问题。
发生了什么?如何防止我们的客户遇到这个问题?
asp.net - ASP 网页中的免注册 COM
我有一个网页应用程序,它在 DLL 和 OCX 后面的代码中使用,其中一些 DLL 是 VB6,其他的是 C++。目前对这些 DLL/OCX 的访问是通过注册表进行的,我想使用RegFree COM更改它。
问题:到目前为止,我发现的所有示例都演示了如何使用清单文件修改访问 DLL 到 Registry Free 的 EXE,假设我们有一个 EXE 和一个 DLL,Registration Free 访问将为 EXE 生成一个清单文件(在设置了对 DLL mnaifest 的依赖项)和另一个用于 DLL(引用 DLL)的依赖项,在我的情况下,我没有 EXE,但有一个浏览器,所以我被 EXE 的清单卡住了。
是否可以在我的场景中使用 Registry Free COM?如果是,我在哪里设置 EXE-> DLL 之间的依赖关系,它在 Visual Studio 的某个地方吗?
谢谢你。
com-interop - .NET 中免注册 COM 互操作的确切步骤(调用复制的 COM dll 而不使用 regsvr32)
我想向我的 .NET 应用程序添加免注册 COM 引用。免注册意味着用户无需将 COM 组件注册到他们的系统即可运行应用程序。
我找到了很多关于这个主题的文章(例如MSDN、这个 S/O question等),但没有一个包含具体步骤。这是我尝试过但没有奏效的方法:
- 如本答案
foo.dll
中所述,使用 mt.exe 为COM dll(例如)生成清单。 - 添加
foo.dll
到foo.dll.manifest
我的应用程序中作为“构建操作”=“内容”和“复制到输出目录”=“始终复制”。 - 添加对
interop.foo.dll
附带的引用foo.dll
。 使用此部分添加应用清单文件:
/li>构建并运行。
错误提示应用程序配置不正确。<assemblyIdentity>
在没有运气的情况下尝试了不同的值。
有人可以分享经验吗?谢谢。
java - 无法在 Java 中工作 reg Free com Dll(在 VC++ 中创建)
当我使用 Reg free COM dll 在 Java 中加载时,它不起作用。但是如果它的注册 COM dll 它加载......我不想在裸系统中使用它作为注册的 com dll ..
我为 COM 组件添加了清单。但是当我尝试创建 CoClass 的对象时,它失败并出现错误“无法创建对象” CreateInstance 返回“0x80040154”。场景1.从java加载c++ dll。2.c++ dll 使用我的 COM dll。
请给我解决方案
c# - 从 C# 订阅托管 COM 程序集中的 COM 事件
我有一个 .NET 3.5 应用程序,并且需要在其中的某个部分使用 .NET 4。因此,我将 .NET 4 部件公开为免注册 COM 程序集。
在 .NET 3.5 程序集中,我有以下代码,可以正常工作:
IManagedInterface 的声明如下:
我还有一个事件接口,声明如下:
这是,据我所知,根据这篇文章:http: //msdn.microsoft.com/en-us/library/dd8bf0x3.aspx
我的 .NET 4 COM 类如下:
那么问题是:如何在顶部显示的 .NET 3.5 客户端中订阅/处理来自 IMyComEvents 的事件?
vb.net - 运行时错误 -2146234341 (8013101b) 从 VB.NET 到 VB6 的自动化错误,使用清单?
我正在尝试在无注册的情况下从 VB6 客户端访问 VB.NET DLL (.NET FX 4.0)。
我尝试按照http://msdn.microsoft.com/en-us/library/ms973915.aspx中的示例进行操作,但没有成功。我下载(文章中的链接)源代码并编译,没有成功(错误消息:运行时错误'-2146234341(8013101b)':自动化错误“)。使用注册的 VB.NET DLL 从 VB6 IDE 运行有效。
我尝试了其他示例,其中 .NET DLL 创建为 COM 类(使用 VS2010 中的“COM 类”模板),是否嵌入了引用 DLL 的清单,但对我没有任何作用。
有人可以提供一些简单的源代码,其中包含在无注册场景中用于 VB6 客户端的 VB.NET DLL (.NET FX v4) 的清单示例吗?
提前非常感谢。
c# - 构建警告 - 隔离 COM 引用
我在我的 .NET 3.5 应用程序中引用了几个活动的 x 控件,我们将其与 reg free COM 一起使用。当我构建解决方案时,构建成功但有一堆警告说明“问题隔离 COM 引用'ActiveXControl':注册表项:'路径'未导入”,因此生成的清单不完整。
确切的错误是:
奇怪的是,其中一个活动 x 控件已成功构建,但另一个未成功构建,即使看起来引用属性相同。
我目前唯一能想到的是我正在 x64 位机器上构建。警告中的注册表路径是注册表的 64 位部分中的路径,但活动的 x 控件已在 Wow6432Node 中注册。
所有项目都具有 x86 的目标平台和 .NET 3.5 的框架。有没有办法告诉 MSBuild 查看 32 位注册表,或者我还缺少什么?
提前致谢。
vb6 - 用 VB6 开发无注册 COM 应用程序
我正在维护一个带有许多 COM 组件(DLL 和 OCX)的 VB6 应用程序。为了简化开发和部署,我想使用 reg-free com。开发的问题是应用程序在 VB6.EXE 实例中运行。如何欺骗 VB6 使用我的(未注册的)组件?在分支之间切换时不必通过注册/注销组件对我来说非常重要。为 VB6 生成 .manifest 文件并非不可能,但是否有其他更优化的方法可以在启动 VB6.EXE 时指定 .manifest 文件?
注意:Activation Context API 似乎没有帮助,即使在开发环境中使用也是如此。
我想到的解决方案:
- 从清单激活上下文并将 VB6 作为子进程启动的实用程序应用程序(不起作用;进程不继承激活上下文)
- 在启动时将上下文激活注入 VB6 进程(太复杂;必须破解可执行文件才能执行此操作)
- 在激活正确的上下文后在我自己的进程中托管 VB6(甚至无法确定这是否可能)
- 使用 VB6 加载项或在 VB6 中运行的其他实用程序来激活上下文(尝试过,但似乎不起作用)
1月16日更新
正如wqw所建议的,我使用 VB.exe.manifest 进行了一些测试。VB6.exe.manifest 有效,但有一些注意事项:
- 清单中指定的 SxS dll 不会出现在未实际引用该组件的项目的引用窗口中
在确实引用该组件的项目上,它将按照以下顺序显示在目录中:
- 项目文件中记录的路径名(如果文件仍然存在)
- 路径名,就好像它与项目位于同一文件夹中一样 (vbp)
如果文件不在这些文件夹中,则项目将无法编译(仅运行代码会导致 VB6 中的内部编译)并显示消息“找不到项目或库”。
显然,VB6 实际上会扫描注册表以查找 COM 组件,并在编译期间验证它们是否存在于它们所说的位置。如果我真的想使用 VB6.exe.manifest 来重定向 COM 组件实例化,我不确定这可能意味着什么。也许在某个预定义的位置拥有虚拟组件文件可能会诱使 VB6 相信一切都是应有的,尽管加载了一组完全不同的组件以供使用。
进一步更新:
我对最后一个假设进行了测试,结果证明它是错误的。该组件必须实际存在才能编译项目。它甚至必须正确加载(不接受虚拟的零长度文件!)。现在我什至不确定清单是否有效。这是一个更耗时的测试(需要一个具有两个版本的组件,产生不同的结果,一个用于项目,一个用于清单)。
.net - 无法从 VBA 获得免注册 COM
更新:花了 20 多个小时试图让一个简单的示例正常工作后,我意识到这并不像看起来那么简单。像这样的文章揭示了“陷阱”——这是在 Windows 7 之前编写的(它以不同的方式处理清单)。我坚持通过 VSTO将 .NET 程序集公开给 VBA 。
我制作了一个简单的 COM-Visible .NET 程序集,并试图从 Excel VBA 中调用它。如果我在 .NET 构建期间“注册 COM 互操作”,我可以成功地从 VBA 调用它。
但是,我想做免注册。
根据汉斯的建议更新:
我取消选中 Register for COM Interop,并将我的 app.Manifest 设置为:
我创建了一个像这样的虚拟“client.manifest”:
在创建对象时,我修改了我的 VBA 以使用 client.manifest:
它在 CreateObject 上失败,并带有不太有用的错误Method 'CreateObject' of object 'IActCtx' failed
。
sxstrace 显示它读取 client.manifest 并创建 Activation Context。进程监视器显示它访问 ComTest.dll 并在注册表中搜索类 975DC7E0-4596-4C42-9D0C-0601F86E3A1B。
我错过了什么?
这是.NET代码:
我正在运行 64 位 Windows 7。