Tag: regfreecom

有没有办法注册免费激活EXE COM组件

有没有办法激活COM组件,这是一个EXE COM应用程序,它还依赖于COM dll? 我想从.NET应用程序(VS 2005 / VS 2008)激活此COM组件。 调用的路径是C#application – >调用out-of-proc exe(这是通过COM)然后这个out-of-proc调用几个COM dll

使用本机/托管环境将无注册COM清单嵌入到C#dll中

我目前正在开发一个混合的本机/托管应用程序链,它使用免注册COM。 下图说明了这一点: 使用tlbimp.exe实用程序创建了C#包装器DLL。 这允许每个C#可执行文件访问COM DLL中的本机类型和方法。 COM DLL本身使用基于服务器的RegFree COM清单。 当基于客户端的RegFree COM清单嵌入在C#可执行文件中时,一切正常。 但是,我想将这些清单文件移动并统一到C#DLL中,这样可以显着简化版本信息的维护和同步。 由于Visual Studio不提供将清单文件嵌入C#类库的选项,因此我尝试使用清单工具(mt.exe)提取,修改和重新嵌入DLL的默认清单。 这似乎有效,因为当用mt查询时,C#DLL现在暴露了以下清单: 但是,可执行文件拒绝工作,每个人抱怨COM类工厂无法找到丢失的COM模块。 我在这里忽略了什么吗? 谢谢。

Windows XP上的Microsoft.Windows.ActCtx

这些天我非常忙于开发activex / com应用程序。 我们的一些客户正在严格限制的Windows环境中工作。 所以我决定让我的应用程序无法使用。 我发现genman32.exe可以轻松创建清单(也是mt.exe很有用)。 一切都很顺利但是当我试图从wsh(vbs或js)执行我的应用程序时 – 由于应用程序在com服务器上运行,因此我的情况是有义务的 – set o = CreateObject(“Application.Interface”) // No object reference 因为“CreateObject”看起来注册并且没有注册入口:)然后我搜索并找到了“actctx”的东西。 在dot.net环境中实现非常容易。 但我必须从wsh(vbs或js)执行我的应用程序;)所以我决定搜索一下然后找到 set o = CreateObject(“Microsoft.Windows.ActCtx”) o.manifest = “L:\\Application.dll.manifest” set app = o.CreateObject(“Application.Interface”) app.Launch() // which is my executing function 问题 – 即使在SP3中,Windows XP的机器也无法使用“Microsoft.Windows.ActCtx”界面 – 微软从未放过任何简单的问题 – 这个问题有什么解决方案吗? 您是否知道创建该接口的任何其他方法或Windows更新?

在Windows 7上使用VB6注册Free Com

我有一些从VB6代码中使用的.NET代码。 我一直在XP机器上通过创建列出依赖.NET程序集的VB6.exe.manifest文件来开发它。 例如,假设我的2个.NET程序集是Some.Assembly.A.dll和Some.Assembly.B.dll,这里是VB6.EXE.manifest的样子(我使用的是version = 1.1.0.0,因为那是版本我在AssemblyInfo.cs中设置了.NET AssemblyVersion: 然后,与同一目录中的DLL一起,我有程序集和它们自己的清单文件。 这是一个示例“Some.Assembly.A.dll.manifest”: 我还在引用的DLL上运行tlbexp来创建TLB文件,这是我在VB6项目文件中引用的内容。 我想转移到Windows 7 64 BIT机器。 使用相同的方法,当我点击在WIN7机器上实例化.NET对象的VB6代码时,我得到了 “ActiveX组件无法创建对象。” 在XP上,它成功了。 如果我故意拼错VB6.EXE.manifest中的Dependent组件 – 在XP上我得到 “此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。” 在WIN7上,VB6只是加载。 它就像忽略了WIN7上的清单,所以我无法在WIN7上使用REG FREE方法加载我的.NET对象。 如果我regasm DLL,一切正常。 关于如何在WIN7(64位)上使用reg free com使VB6工作的任何想法?

Regfree COM事件从其他线程失败

我有一个COM可见的.NET类,它暴露事件并从VB6使用。 在过去的几天里,我一直试图让这个与regfree COM一起工作,但没有成功。 当从原始线程触发事件时,VB6事件以regfree模式运行。 当注册了类型库时,VB6事件在从另一个线程触发时运行。 (regasm / tlb / codebase后跟regasm / codebase / unregister,后者不注销tlb) 在regfree模式下从另一个线程触发时,它会抛出exception,因此永远不会执行VB6事件代码。 System.Reflection.TargetException: Object does not match target type. at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams) at […]

托管的无Reg COM服务器将无法激活

我开始使用一个非常复杂的客户端和服务器系统,带有COM引用和其他东西,我一直在减少直到我意识到我甚至无法获得Microsoft示例代码来管理托管COM服务器的免注册COM激活用C#编写。 服务器代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices.ComTypes; using System.Runtime.InteropServices; using System.ComponentModel; namespace ClassLibrary1 { [Guid(“A7AC6D8C-FF17-4D2C-A3B1-2C8690A8EA04”) ,ComVisible(true)] public interface IClass1 { [DispId(1)] string DummyFunction(string inputValue); } [Guid(“81723475-B5E3-4FA0-A3FE-6DE66CEE211C”), ClassInterface(ClassInterfaceType.None), ComDefaultInterface(typeof(IClass1)), ComVisible(true)] public class Class1 : IClass1 { public string DummyFunction(string inputValue) { return inputValue.Substring(0, 1) + ” Inserted ” + inputValue.Substring(1); } […]