问题标签 [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# - 如何在第三方应用程序加载的插件 dll 中加载无注册表的 COM dll?
按照此处给出的步骤,我已经让注册表免费 COM 与示例应用程序一起工作。https://msdn.microsoft.com/en-us/library/ms973913.aspx[^ ]
现在我需要从 dll 而不是直接从应用程序加载相同的 reg free COM。我尝试为 dll 制作清单文件,但找不到 dll。是否可以将应用程序更改为我的插件 dll 的程序集清单并从那里加载 reg free COM?
我没有找到关于这种情况的太多信息。
谢谢。
c# - 托管的无注册 COM 服务器不会激活
我从一个非常复杂的客户端和服务器系统开始,其中包含 COM 引用和其他东西,我已经减少和减少,直到我意识到我什至无法获得 Microsoft 示例代码来为托管 COM 服务器的免注册 COM 激活工作用 C# 编写。
服务器代码:
客户端 VB6 代码:
客户端 C++ 代码:
当我删除所有 Reg-Free COM 代码并使用 regasm /codebase 注册 ClassLibrary1.dll 时,两个客户端都可以正常工作。
然后我取消注册 ClassLibrary1,并尝试使用 Project1.exe.manifest 文件为 VB6 客户端引入 Reg-Free COM:
和 ClassLibrary1.manifest:
现在我有时会收到错误 429(ActiveX 组件无法创建对象),有时还会(莫名其妙地)出现自动化错误:
运行时错误“-2146234304 (80131040)”:自动化错误
现在,当我运行 C++ 客户端时,输出仅仅是
错误 800401f9
windows - RegFreeCom 无法从 progid 解析 clsid
所以,我有一个 COM 对象,我正在尝试使用免注册 COM 加载它。
我为 .ocx 创建了一个清单,如下所示:
并将其保存为我的部署文件夹中的“assembly1.manifest”。
我的应用程序的 main.cpp 如下所示:
当我调试它并检查 CLSIDFromProgID 的结果时,尽管返回了 S_OK,但 clsid 包含的垃圾值与清单中指定为 comClass clsid 的 clsid 不同。查询不同的 clsid 会返回一个空的 clsid 和一个 E_INVALIDCLASSNAME 错误作为结果。
粘在新鲜的 clsid 中。本地测试。仍然失败。
windows - 如何为仅用于远程 COM 对象的 TLB 创建清单文件?
我的 Delphi 应用程序Client.exe
需要几个.tlb
文件才能工作。这些文件定义服务器接口。相应的对象实例是用System.Win.ComObj.CreateRemoteComObject
.
问题是什么?
目前,这些.tlb
文件在安装期间使用全局regtlibv12.exe
注册,并在卸载软件时取消注册。这使得安装和卸载同一软件的多个实例变得不可能,因为它会破坏 TLB 注册。
尝试使用免费注册 COM解决它
这个想法是使用.tlb
没有注册但有文件的.manifest
文件。我知道如何在Delphi 中使用自定义的 Windows 应用程序清单文件。但我不知道如何从.tlb
文件中提取信息并创建正确的.manifest
文件。
我找到了可用于生成文件的Mt.exe.manifest
,但它对我没有帮助,因为
它在设置参数时要求相应的 DLL 文件,
-tlb
但由于 COM 对象是在远程计算机上创建的,因此应用程序没有.dll
附带文件它不接受
.tlb
参数列表中的多个文件。
其他工具(例如“制作我的清单”或“无人值守的制作我的清单”)不再可用或对我没有帮助。
在这种情况下创建清单文件的正确方法是什么?
excel - 在 Excel 2010 中使用无注册 COM
我一直在努力使用无注册 COM 从 Excel 2010 进行 .NET 调用。本质上,我希望能够在 Excel 宏中调用一些 .NET API 函数。我在 .NET 中创建了一个包装器 API,并将该包装器公开为一个 COM 可调用库。代码如下:
使用免费注册 COM 的清单如下:
为了在 Excel 中调用包装好的 .NET 函数,我使用了以下 VBA 代码:
但是,问题是当最后一行代码被调用时,我得到一个运行时错误 2147024894 (80070002) Method 'CreatObject' of object IActCtx' failed。老实说,我不知道我做错了什么,或者即使这是可能的。非常感谢任何帮助或建议。
需要注意的是,DLL、清单和工作簿都在同一个目录中。还应该注意的是,VSTO、可执行文件和/或安装不是我的选择。这就是为什么我要坚持使用 Excel。
com - 如何处理 regfree 的 COM 事件?
我正在尝试处理从 C# 服务器到 C++ 客户端的 COM 事件。我可以使用服务器 regfree,但我的活动不再有效。
以前,通过注册,事件是通过IDispEventImpl
ATL 在客户端中处理的。
我无法找到任何直接解决此问题的文章,但我确实看到了一个IConnectionPoint
本质上不需要注册的建议。
我还看到了一些IDispEventSimpleImpl
可能适用于 regfree 的建议。
com - 在重新启动之前,ActiveX 组件无法使用无 reg-free com 创建对象
当我通过无注册 com(使用清单文件)安装使用 ActiveX 库的应用程序的新版本时,我收到“ActiveX 组件无法创建对象”错误。但是,当我重新启动机器并再次运行应用程序时,错误消失了。没有其他应用程序正在使用 com dll。
知道是什么原因造成的吗?是否有另一种方法可以成功分发此应用程序而无需重新启动机器?
com - 是否可以从已注册的 COM 中使用 regfree COM?
我一直在尝试实现以下场景:
应用程序 [C++] 在注册的 COM 类 (CReg/Reg.dll) 上使用 CoCreateInstance
CReg 类在 regfree/SxS COM 类 (CFree/Free.dll) 上使用 CoCreateInstance。
CoCreateInstance 返回 REGDB_E_CLASSNOTREG。
问题似乎与清单无关,因为如果我尝试通过应用程序直接实例化 CFree,则创建对象没有问题。
我已经检查并且上面的场景触发了 CReg 的激活上下文(我已经检查了 sxstrace),甚至 CFree 的清单也已成功加载(!),这应该在正确的 regfree COM 中起作用。如果我更改 CFree 的清单,那么激活上下文会失败(我相信这证明了它在更改之前被正确触发和加载)。
使用已注册的 COM [CReg] 的场景是否无法访问 CFree 对象?如果可能的话,是否有一些特殊的工作才能正确加载它?
编辑
在 Joe 的帮助下,我们发现问题出在 Free.dll 所在的位置。
主要应用程序(例如)在 C:\Proj\App 中,Reg.dll 和 Free.dll 都在 C:\Proj\Libs 中。是否有可能加载与应用程序位于不同位置的 regfree Free.dll?问题是我不能将它放在应用程序目录或应用程序子目录中(它必须在外部位置)。
我尝试在 Reg.dll 项目上使用 ISOLATION_AWARE_ENABLED 预处理器定义,以从 Reg.dll 目录触发激活上下文。来自 Free.dll 的清单已正确加载(sxstrace 记录),但 CoCreateInstance 调用仍返回 REGDB_E_CLASSNOTREG。这篇博客文章指出,这个定义可能是可能的(但没有就此问题给出明确的答案)。
任何人都可以帮助我解决这个问题,或者至少指向可能给我答案的文档,无论是否有可能,从外部位置加载 regfree dll?
vb6 - NSIS RegFree,组件...未正确注册... Win10(x64)或Win7(x64)
我已经让我的 NSIS 脚本文件在 32 位上工作了一段时间......在新的(不用于开发)Win7/Win10 (64) 上,.OCX 文件存在问题。
程序及其支持文件安装在 C:\Program Files (x86)... 或 D:\Program Files (x86)... 这包括:Program.exe、Uninstall.exe、.dll、.tlb、. olb、.ocx 和它们的 .manifest 文件。我的安装是“RegFree”。他们的数据文件位于:C:\Users\Public... 或 D:\Users\Public...
我在启动程序时收到错误消息,新安装在 Win7(x64) 或 Win10(x64) PC 上:
组件“RICHTX32.OCX”或其依赖项之一未正确注册:文件丢失或无效
根据程序,这抱怨:MSCOMCT2.OCX、threed32.ocx 或 RICHTX32.OCX
我在部署环境中运行了 Dependency Walker,例如:Win10(64) for RICHTX32.ocx。它在左侧面板中创建了一个列表:
SHELL32.DLL OLEDLG.DLL KERNEL32.DLL USER32.DLL 0LE32.DLL ADVAPI32.DLL OLEAUT32.DLL COMDLG32.DLL GD132.DLL
KERNEL32.DLL 是右侧面板中唯一带有红色标记项的第一行依赖项。
我更新了 NSIS 脚本以包含 KERNEL32.DLL 以及复制到 C:\Program Files (x86) 的其他支持文件...
我仍然收到错误消息:组件“RICHTX32.OCX”或其依赖项之一未正确注册:文件丢失或无效
关于如何在我的 RegFree 安装中取得成功的任何想法。请?
这就是我开始的方式,没有 KERNEL32.DLL 。无论有没有它,我都会收到错误消息。– 用户243281
我希望我有一个关于如何准备我的安装以在 Win7(x64) 和 Win10(x64) 上工作的答案。他们把东西放在正确的文件夹中,但不运行。
我在 WinXP(32) 虚拟 PC 上使用 VB6 创建了这个应用程序。我还在同一个开发环境中编译了 NSIS 脚本。我相信我的工作已经完成,但我的测试安装在被开发活动“污染”的 PC 上。
-------------- 我的 QueryMgr 清单:
? 如果清单(XML),我在每行前面插入了 4 个空格,但它不接受它?
我无法让它接受 QueryMgr 清单。它是一个 XML 文件,但与 HTML 不够接近……?
所有清单文件都安装在安装目录中,例如:C:\Program Files (x86)\Clark_Anderson\
我尝试在主发布窗口中粘贴清单文件,但它们是代码......?(类似于 HTML 的 XML 文件)
.OCX 文件可能是我的 VB6 开发环境的一部分。可能与我在应用程序中使用的表单控件有关。其中之一,threed32.ocx,是~第 3 方?附件?到 VB6。
--------------------- NSIS 脚本:
(我希望这个 NSIS 脚本作为干净的代码通过,在我编辑插入 4 个空格之后)
================================
RICHTX32.OCX 好像需要kernel32.dll
C:>dir /s kernel32.dll
驱动器 C 中的卷是 OS
卷序列号是 48C7-50D7
C:\Windows\System32 目录
05/30/2017 01:39 PM 708,712 kernel32.dll
1 文件 708,712 字节
C:\Windows\SysWOW64 目录
05/30/2017 01:39 PM 599,576 kernel32.dll
1 文件 599,576 字节
C:\Windows\WinSxS\amd64_microsoft-windows-kernel32_31bf3856ad364e35_10.0.15063.0_none_a4d1be7a8f1a4216的目录
2017 年 5月 30 日下午 1:45 19,984 kernel32.dll
1 文件 19,984 字节
C:\Windows\WinSxS\amd64_microsoft-windows-kernel32_31bf3856ad364e35_10.0.15063.296_none_289f5225bcc26659的目录
05/30/2017 01:39 PM 708,712 kernel32.dll
1 文件 708,712 字节
C:\Windows\WinSxS\wow64_microsoft-windows-kernel32_31bf3856ad364e35_10.0.15063.0_none_af2668ccc37b0411的目录
05/30/2017 01:55 PM 7,072 kernel32.dll
1 文件 7,072 字节
C:\Windows\WinSxS\wow64_microsoft-windows-kernel32_31bf3856ad364e35_10.0.15063.296_none_32f3fc77f1232854的目录
05/30/2017 01:39 PM 599,576 kernel32.dll
1 文件 599,576 字节
安装 PC (win10(64)) 有 6 个不同的 kernel32.dll 副本。我的应用程序应该如何知道使用哪一个?
我的虚拟开发PC (WinXT(32)) 有这两个richtx32.ocx 副本:
C:>dir /s RICHTX32.OCX
驱动器C 中的卷没有标签。
卷序列号为 F432-F929
C:\Program Files\Clark_Anderson\QueryMgr 目录
03/09/2004 12:00 AM 212,240 richtx32.ocx
1 文件 212,240 字节
C:\WINDOWS\system32 目录
03/09/2004 12:00 AM 212,240 RICHTX32.OCX
1 文件 212,240 字节
我的“受污染”主机开发 PC Win7(x64) 有这些richtx32.ocx 副本:
C:>dir /s RICHTX32.OCX
驱动器 C 中的卷是操作系统
卷序列号是 70F2-883E
C:\Program Files (x86)\Clark_Anderson\QueryMgr 目录
03/09/2004 12:00 AM 212,240 richtx32.ocx
1 文件 212,240 字节
C:\Program Files (x86)\Microsoft Visual Studio\Common\Tools\VB\Controls\Controls_Backup 的目录
03/09/2004 12:00 AM 212,240 RICHTX32.OCX
1 文件 212,240 字节
C:\Windows\SysWOW64 目录
02/16/2010 03:22 PM 218,432 richtx32.Ocx
1 文件 218,432 字节
安装不成功的 PC Win10(x64) 只有 NSIS 脚本安装的副本,例如:
C:>dir /s richtx32.ocx
驱动器 C 中的卷是 OS
卷序列号是 48C7-50D7
C:\Program Files (x86)\Clark_Anderson\QueryMgr 目录
03/09/2004 12:00 AM 212,240 RICHTX32.OCX
1 文件 212,240 字节
有谁知道这件事的意义?我使用无注册安装的努力是为了防止我的应用程序干扰其他应用程序并允许干净卸载,同样不干扰其他应用程序和数据。
我创建了测试应用程序,请求,一个带有它的一个 RichTextbox 控件的表单。它的清单在下面的评论之一中:
NSIS 脚本是我在另一台 PC 上创建应用程序安装的方式。
我对 Windows 10 的经验很少。我确实找到了事件查看器。我确实在 Windows 日志/系统中看到了一些错误: DistributedCOM eventID 10016 但只发生了一次(2),因为我安装了 zRichTx 应用程序(不是我尝试运行它的几次)
以同样的方式,我发现了一个错误:Windows Logs/Application: Application Error EventID 1000 Task Category (100),但它不响应卸载、安装和几次运行应用程序的尝试都以相同的错误消息结束: 组件 RICHTX32.ocx 未正确注册...
在 (x64) Windows 10 和 Windows 7 上安装我的 VB6 应用程序的部分工作让我不知所措。这就是我向专家寻求帮助的原因。
你是对的。我找到了如何使用管理员打开 cmd 提示符。这些就是结果。这对你有意义吗?
你是对的。我找到了如何使用管理员打开 cmd 提示符。以上是结果。这对你有意义吗?
我没时间了。我的 Windows10(x64) 测试 PC 很快就会消失。在我的 Windows7(x64) 测试 PC 上,SXStrace 解析文件为空?如果我以管理员身份登录,zRichtx 程序可以工作吗?!
我在 Windows10(x64) 测试 PC 上创建了管理员登录...在那里运行 zRichtx 得到相同的错误消息,但是 SXStrace,又出现空?!
dcom - 用 1C 语言编写的无注册 COM
我正在用 C 编写应用程序,它从 DCOM 对象调用函数。DCOM 存储在用 1C 语言编写的 DLL 中。
当 DCOM 在系统中注册时,我的应用程序运行良好。有没有一种方法可以使用 Reg-Free 从 *.dll 调用函数(我的意思是:没有在系统中注册 .dll)?
我已经尝试了很多次,但我失败了。我使用mt
(来自 Visual Studio)将清单 xml 嵌入到 dll 中,但它不起作用。
.dll 清单:
我的应用程序清单: