问题标签 [reg-free]

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.

0 投票
1 回答
140 浏览

c# - 如何在非 UI 线程中使用无 reg 的 COM?

参考:https ://connect.microsoft.com/VisualStudio/feedback/details/457217/reg-free-com-fails-when-threaded#tabs

在非 UI 线程中使用无 reg 的 COM DLL (isolated = true) 时,我得到“无法转换类型的 COM 对象”。如果在 UI 线程中调用 DLL,则情况并非如此。但是,就我而言,我有一些非常耗费资源的电话,有什么办法解决这个问题吗?

0 投票
1 回答
634 浏览

c# - 使用 EXE 注册免费 COM 错误

我正在尝试使用 EXE 公开的 COM 函数。我使用 Visual Studio 2010(在 windows7/x64 机器上)创建了一个 C# 项目,并添加了对该 EXE 的引用,然后将隔离标志设置为 true。当我构建解决方案时,我得到它公开的每个类的错误。

隔离 COM 引用“FNCClient11Lib”时出现问题:注册表项“HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID{e49b30c9-6d7e-48f5-91da-f2f0414c6a13}\InProcServer32”缺少值“(默认)”。

这些条目在该位置的注册表中不存在,但在此处存在(如下)

HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID{E49B30C9-6D7E-48F5-91DA-F2F0414C6A13}

  • 有什么方法可以在构建时将其指向注册表中的正确位置?
  • 我可以引用一个EXE吗?到目前为止,我看到的所有示例都仅引用 DLL。
0 投票
1 回答
133 浏览

com - 在 Windows 中启动进程时是否可以选择要使用的清单?

我正在尝试提供一个 COM 对象,该对象可用作我无法控制的可执行文件中的对象的替代品。我用所有相同的接口创建了这个 COM 对象的实现。我希望只能偶尔使用此替换,因此我不希望它的注册替换原始对象。

通过修改可执行文件的清单以在我的 dll 中查找 com 对象而不是通过注册表查找原始对象,我可以让可执行文件加载我的 COM 对象而不是使用无注册 COM 的原始对象。

到目前为止,一切都很好。但是这样做需要修改可执行文件中的清单文件。我不希望此更改是永久性的,并且由于可执行文件通常安装在“程序文件”中,因此还需要管理员权限才能更改此文件。

理想情况下,我想要的是保持原始可执行文件不变。然后,当需要时,我创建的单独启动程序将使用重定向到我的 com 对象的清单加载请求的可执行文件,而不是可执行文件中的原始清单文件。

这样的事情可能吗?或者也许是一种更好的方式来做我想做的事情?

注意:我可能无法在我具有写入权限的位置更改清单并制作可执行文件的副本,因为我事先不知道该可执行文件的所有依赖项将是什么(它可能需要来自同一目录,或来自子目录的数据文件)。我可以将修改后的可执行文件的工作目录设置为原始可执行文件的目录,但如果可执行文件根据其文件位置执行任何操作,它将中断。

0 投票
0 回答
269 浏览

windows-7 - NSIS 安装的 VB6 应用程序可在 Windows 7 上运行,但在 Windows 7 SP1 上“...未正确注册...”

我很困惑,我以为我已经测试了我的 NSIS 安装包,并且可以在 Windows 7 32Bit 和 64Bit 上运行。

今天我无法运行:我的笔记本电脑(Windows 7 Pro 32Bit SP1)VMWare Windows 7 Home Premium 64Bit SP1

在VMWare Windows 7 Home Premium 32Bit Windows XP Pro SP3上成功运行

安装按预期进行。运行应用程序时出现错误消息:组件“---.ocx”或其依赖项之一未正确注册:文件丢失或无效。此时标记的参考文件包括:MSCOMCT2.OCX、RICHTX32.OCX 和threed32.ocx。

安装过程将参考文件和清单文件放在安装文件夹中。

这种“所需的一切”是通过包括清单文件(无注册 COM)来实现的,因此,避免使用 PC 注册表。例如:文件“C:\WINDOWS\system32\MSVBVM60.dll” 文件“D:\Devlpmnt\LANG\VB6_dllManifest\MSVBVM60.dll.manifest”

我确信我已经成功测试了 VMWare Windows 7 Home Premium 64Bit SP1 安装,2013 年 8 月。

我能想到的唯一区别是所有失败的 Win7 平台都有“Service Pack 1”。

SP1 和_ 导致问题?如果是这样,我该如何解决?

0 投票
0 回答
52 浏览

com - 如何从DLL对同一进程的EXE中实现的COM对象进行免注册接口调用?

现在众所周知,如何在免注册环境中对 DLL 实现的 COM 对象进行接口调用。问题是相反的:

如何从 DLL 对 EXE 中实现的 COM 对象进行接口调用?应该使用哪些清单和哪些清单部分?

编辑:可能不是很清楚,但我的意思是进行中的通话。我想在同一个进程中调用一个对象,但在 EXE 而不是 DLL 中实现。

EDIT2:好的,我看到事情变得复杂,所以我必须解释原来的问题。C ++应用程序实现 IApplication 接口并将指向它的指针作为成员。此成员由可通过 AfxGetApp() 从任何地方访问的公共方法返回。

还有一种机制允许任何客户将他自己的C# “插件”DLL 添加到我们的应用程序中。对于此类 DLL,IApplication 接口是应用程序功能的关键访问点。但是这些 DLL 无法访问主应用程序的对象。

为了解决这个问题,我添加了一个辅助的“ICreateApplication”对象,它返回原始的 IApplication 指针。任何“插件”DLL 都可以创建这个辅助对象并从中获得所需的接口。我在一些任意选择的 DLL 中实现了这个对象,并为它配备了必要的清单。

这个解决方案效果很好,但是这种“任意选择”让我很困扰。我想知道,是否有可能在应用程序对象中实现“ICreateApplication”?

0 投票
0 回答
65 浏览

vb6 - 动态添加控件的并排(regfree)问题

我们迁移我们的 vb6 项目以使用 sidebyside(regfree) 技术 ....但是在动态添加控件以形成如下问题时遇到问题:

当使用 tmpCtl 对象时:

我们收到错误“对象不支持此属性或方法”

我发现人们也有同样的问题(缺少方法的奇怪案例:SXS 和 Controls.Add 导致“对象不支持此属性或方法”?)并建议实施“直接用户控制”。

有人可以知道如何在 vb6 代码中实现这一点吗?我们如何解决 sxs 和动态添加控件到表单的问题?

可以给我们相同的解决方案示例如何解决这个问题?

0 投票
2 回答
97 浏览

.net - 如何从 vb6 ocx 获取“miscStatus”?

如何从 .net 获取VB6 ocx 的miscStatus而无需在本地计算机上注册?

我使用TLI (TypeLibInfo) 获取有关 ocx 的所有其他信息,但我不知道如何获取此属性?

有人知道 regsvr32 在注册 ocx 时如何生成 MiscStatus 吗?


编辑:我忘了说我想miscStatus从 ocx 获取而不需要在本地计算机上注册它。