问题标签 [clsid]

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 投票
4 回答
4576 浏览

com - CLSIDFromProgID 成功但 CreateInstace 失败!为什么?

我正在尝试创建一个 COM 对象的实例。我有实现接口的类名,并通过使用 CLSIDFromProgID() 获得 CLSID。因此,由于我获得了 CLSID,我认为从现在开始一切都会好起来的。但是,当我调用 CreateInstance 并传入 CLSID 时,我收到一条错误消息,提示“类未注册”。我也只在某些计算机上收到此错误。它在多台计算机上运行无错误。我不明白问题可能出在哪里。我的注册表脏了吗?有谁知道这里发生了什么?谢谢你的帮助!

我只想补充一点,这是一个 .NET COM 类。相应的条目位于注册表中,DLL 位于 GAC 中。

0 投票
6 回答
71899 浏览

com - Windows 64 位注册表与 32 位注册表

我听说在 Windows x64 架构上,为了支持同时运行 x86 和 x64 应用程序,有两组单独/不同的 Windows 注册表——一组用于 x86 应用程序访问,另一组用于 x64 应用程序访问?例如,如果一个 COM 在 x86 注册表集中注册 CLSID,那么 x64 应用程序将永远无法通过 CLSID 访问 COM 组件,因为 x86/x64 有不同的注册表集?

那么,我的问题是我对上述示例的理解是否正确?我还想获得更多文档来学习这个主题,关于 x64 架构上的两组不同的注册表。(我做了一些搜索,但没有找到任何有价值的信息。)

0 投票
4 回答
42444 浏览

dll - 如何找到给定 CLSID 的 DLL?

我有一个托管 DLL 调用一些非托管 DLL 的情况。我知道非托管 DLL 的 CLSID,有没有办法找出那个 CLSID 所在的二进制文件?

0 投票
1 回答
516 浏览

com - XBAP 使用非托管 c++ COM 服务器,并排部署问题

我面临以下情况:我创建了一个简单的完全信任 XBAP 应用程序,它引用了非托管 c++ COM 服务器(隔离)。

部署后,我希望 XBAP 应用程序会发现位于同一目录中的 COM 服务器 dll,但事实并非如此。我收到以下错误:

调用的目标已引发异常。---> System.Runtime.InteropServices.COMException (0x80040154):检索具有 CLSID {970599E0-2673-11D3-A8A8-00105AA943DF} 的组件的 COM 类工厂失败,原因是以下错误:80040154。在 Generation888.Generation888.Simple (Int32 num1,Int32 num2)

我验证了部署 XBAP 的文件夹包含包含正确 CLSID 的 DLL 和 XBAP 清单

如果我创建了一个简单的 C# Windows 窗体应用程序并引用相同的 COM dll,它就可以正常工作。

我的问题是 XBAP 是否支持 Side-by-Side 机制。

谢谢

0 投票
3 回答
5297 浏览

c# - HRESULT:0x80040154 CLSID {} 的 COM 对象无效或未注册

我在我的 C# .NET 1.1 应用程序中使用 COM 对象。当 COM 对象未在客户端计算机上注册时,出现异常:

“具有 CLSID {} 的 COM 对象无效或未注册。” (HRESULT:0x80040154)

我知道如何使用 regsvr32 注册 COM 对象。我们的要求是识别未注册的 COM 对象。我们不想硬编码 COM 对象的名称,而是使用 COM Exception/HResult 动态识别它。有任何想法吗?

0 投票
1 回答
3175 浏览

c# - Visual c# Express Edition - 无法让 Acrobat pdf 阅读器工作

我正在尝试在 Visual C# 2008 Express Edition 项目中使用 Acrobat Inter Application Communication (IAC) 打开 C# 应用程序中的 PDF 文档。
执行以下代码时出现异常:

异常报告特定 CLSID 的 COM 类工厂失败并出现错误 80040154。在 MSDN 上的 winerror.h 中查找错误代码,该错误与未注册的类有关。
我尝试使用 regsvr32 注册 Interop.Acrobat.dll 但这无法正常工作(找不到入口点 DllRegisterServer)。
我已经尝试了 Acrobat 9 SDK 附带的示例 C# 项目(BasicIacCS - 有一个名为 BasicIacCS.suo 的 Visual Studio 项目,它导入到 c# Express 中没有任何错误,但由于相同的异常而失败)。


我犯了一些根本性的错误吗?(我是 Windows/.NET 编程的新手)
这可能在快速版下还是我应该升级到 Visual Studio?


进一步研究问题,当我对我的应用程序(.exe 文件)执行 ILDASM 时,所抱怨的 CLSID 可用 - 这是我尝试访问的 AcroPDDoc 类的 CLSID。注册表中不存在此类及其关联的 CLSID。我只安装了 Acrobat 阅读器 - 不是完整版。访问 COM 接口是否需要完整版的 Acrobat?(我只有 Acrord32.dll,系统上没有 Acrobat.dll)。我在不同的 Vista 机器上试用了相同的程序,并卸载/重新安装了 Arobat 阅读器,结果相同。

0 投票
3 回答
685 浏览

c# - COM class factory error

I am getting the following error on my workstation when I am trying to work with a COM object.

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in CarteGraphInterface.exe

Additional information: Retrieving the COM class factory for component with CLSID {3963F0F8-6B0C-4A65-90F4-F60168044014} failed due to the following error: 80040154.

I have read through a few questions here on SO and non of them have helped. That ID is not listed anywhere in the registry. Does it need to be added?

Update: A bit more information. When I choose "Add Reference..." in VS2008, the object is listed there (that is how I found it initially), and the source is listed as a *.exe. regsrv32 didn't work.

0 投票
2 回答
7918 浏览

windows - 获取 DLL 文件的 CLSID?

我想创建一个小应用程序来从注册表中添加和删除用户定义的上下文菜单条目。为此,我需要以某种方式获取任意 DLL 的 CLSID,以便在编写新条目之前备份以前的条目(如果它们存在)。

尽管regsrv32以某种方式设法创建了这个神奇的数字,但我自己没有找到任何方法来获得这个数字。

我希望有比这更好的东西:

  1. 扫描注册表以获取 DLL 名称
  2. 如果没有找到,注册它,再次扫描,然后再次取消注册

如果 DLL 已重命名,我可以看到问题的可能性。

0 投票
2 回答
1436 浏览

java - ProgID and file extension relation

I am working on a program using the JACOB project (JAva COm Bridge).

There is a file to open, the entire name is passed along (ex. c:\test\test.xls). In order for JACOB to create a new ActiveXComponent it needs to be passed a ProgID or CLSID. (Such as Excel.Application, or Word.Application, but outside of the MS realm there is also Autocad.Application etc.)

So how can one relate either the file extension or MIME type to a given ProgID or CLSID? Is there another db that I can join to Win32_ProgIDSpecification? Win32_ProgIDSpecification has all the ProgID's.

0 投票
3 回答
162 浏览

com - 收到有关新 COM 服务器注册的通知

我试图找到一种方法来识别新注册或未注册的(通过 regsvr32)COM 服务器,这些服务器已添加到注册表 (CLSID)。我可以使用任何回调函数吗?我真的不想轮询注册表...