问题标签 [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 投票
1 回答
479 浏览

winapi - 在 Win32 中通过 CLSID 和 QueryInterface 创建窗口

我想通过 clsid 在 Win32 中创建一个 COM 控件:{3523C2FB-4031-44E4-9A3B-F1E94986EE7F} 然后使用 api QueryInterface 向它发送命令。在 MFC 项目中,这将非常简单,只需 4 行代码:

在 Win32 中我到目前为止所尝试的:

如何通过 clsid 创建控件并将其附加到 IUnknown 的一个非常基本的示例将非常有帮助!

0 投票
1 回答
65 浏览

windows - 自定义文件夹出错

我已经为此工作了好几天,但仍然无法弄清楚如何做到这一点:创建一个自定义文件夹。

这是我使用的一些信息:

这些链接的目标与我之间的主要区别在于,我并没有试图将我的文件夹固定到其他地方。我唯一想做的就是创建一个到文件夹子目录的重定向。

这是我的简单图表: 主目录示意图

因此,如果我打开主目录(黄色部分),desktop.ini 和主目录的系统属性将调用我的自定义 CLSID(解释)并自动重定向我对重定向文件夹的访问。我的自定义 CLSID 还将在上下文菜单(右键单击时出现的列表)中添加一个选项来执行 .cmd 文件。.cmd 文件将允许用户在输入正确密码时访问隐藏文件夹。

所以这是我的注册表项:

Windows 注册表编辑器版本 5.00

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}] @=""

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}\DefaultIcon] @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d ,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,53,00,79,00,73,00,74,00,65,00,6d, 00,33,00,32,00,5c,00,73,00,68,00,\ 65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00 ,6c,00,6c,00,2c,00,2d,00,34,00,00,\ 00

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}\InProcServer32] @="shell32.dll" "ThreadingModel"="ApartMent"

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}\Instance] "CLSID"="{0E5AAE11-A475-4c5b-AB00-C66DE400274E}"

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}\Instance\InitPropertyBag] "TargetFolderPath"="C:\Custom\Location\to\the\Main\Directory"

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}\Shell]

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}\Shell\Open Vault]

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}\Shell\Open Vault\Command] @="cmd /c Open.cmd"

[HKEY_CLASSES_ROOT\CLSID{a79ff1d1-166e-4f20-967f-5aa2a0c19cd0}\ShellFolder] "属性"=dword:00000000

看起来这会按预期工作,但它有一个缺陷:我的Main Directory实际上并没有将我重定向到Redirect Folder。这是我的证据:

  • 当我右键单击时,每个创建选项都消失了(创建新文件夹、文本文件等)
  • 当我使用上下文菜单中的第 3 方软件创建文件时,它没有在Redirect 文件夹中创建文件,而是在Main Directory中创建文件
  • 最重要的是,当我 Shift + 右键单击​​并打开命令提示符时,它将我的当前目录显示为主目录而不是重定向文件夹

所以我想问的是:如何将我的主目录访问完全重定向到重定向文件夹并在上下文菜单中保留我的隐藏文件夹打开选项?

0 投票
1 回答
1696 浏览

c# - C#:DLL 已注册,但仍出现 COM 错误 80040154

当我调试我的Windows 窗体应用程序时,我收到此错误:

由于以下错误,检索具有 CLSID {27526253-6119-4B38-A1F9-2DC877E72334} 的组件的 COM 类工厂失败:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))

正因为如此,我的WFA无法与我电脑上安装的Solidworks软件交互;WFA需要与Solidworks交互的唯一库是 ( Solidworks目录SolidWorks.Interop.sldworks.dll中的本地位置C:\Program Files\SOLIDWORKS Corp 2017\SOLIDWORKS\SolidWorks.Interop.sldworks.dll)。

其他信息如下。

  • 编译器:Microsoft Visual C# 2010 Express
  • 操作系统:Microsoft Windows 7 64 bit(更新)
  • 登录帐户:管理员
  • WFA 目标框架:Microsoft .NET Framework 4.0 Client Profile
  • WFA 架构:x86(32 位)
  • 库的体系结构:x86(32 位)

当我通过Visual Studio将库添加SolidWorks.Interop.sldworks.dll到我的项目引用中时,没有 CLSID

{27526253-6119-4B38-A1F9-2DC877E72334}

进入Windows 注册表,所以我尝试通过以下方式注册该库:

    • 粘贴SolidWorks.Interop.sldworks.dll到目录 C:\Windows\SysWOW64
    • 管理员身份运行命令提示符,而不是键入C:\Windows\ SysWOW64 >regsvr32 C:\Windows\SysWOW64\SolidWorks.Interop.sldworks.dll
    • 按下Enter
    • 阅读此消息:

模块C:\Windows\SysWOW64\SolidWorks.Interop.sldworks.dll已加载,但对 DllRegisterServer 的调用失败...

所以,图书馆没有注册。

    • 粘贴SolidWorks.Interop.sldworks.dll到目录 C:\Windows\Microsoft.NET\Framework\v4.0.30319
    • 管理员身份运行命令提示符,而不是键入C:\Windows\Microsoft.NET\Framework\v4.0.30319>regasm SolidWorks.Interop.sldworks.dll
    • 按下Enter
    • 阅读此消息:

类型已注册。

所以,我想,现在图书馆注册了,其实我看到的是CLSID

{27526253-6119-4B38-A1F9-2DC877E72334}

进入Windows 注册表

然而,问题仍然存在。

  1. 在我的C#代码中,我创建了一个new Guid; 这是代码:

    /li>

问题仍然存在。

你能帮我么?谢谢。

0 投票
0 回答
1967 浏览

c# - 由于 80070005 ASP.net MVC 应用程序中的访问被拒绝,检索组件的 COM 类工厂失败

大家好,我在使用 COM office Excel 调用解决问题时遇到了问题。

这是我的大便代码:

一旦代码到达MSOIE.Application xlsApp = new MSOIE.Application(); 它的一部分是异常,并且 e.Message 说:

由于以下错误,检索具有 CLSID {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80070005 访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))。

我搜索了很多以查看其他修复,但似乎对我不起作用。我试过了:

信用:这里

信用:这里

信用:这里

现在奇怪的是,我刚刚做了一个普通的 winform 并且具有与我的 ASP.net MVC 项目中相同的代码,并且一旦它到达那个MSOIE.Application xlsApp = new MSOIE.Application();它就可以正常工作。一行代码,所以我真的无法弄清楚这两个之间的区别是什么会导致一个工作和另一个(使用相同的代码)不是......

任何帮助都会很棒!谢谢!

0 投票
1 回答
739 浏览

c++ - 如何在 Windows 7 上的 C++ 中为虚拟文件夹创建快捷方式?

我使用的平台是windows 7。我需要为windows 7上的虚拟文件夹创建快捷方式。我使用windows 7 SDK示例在Computer下创建一个虚拟文件夹:

在此处输入图像描述

示例项目名称为ExplorerDataProvider,它定义了 IShellFolder 类的 CLSID:

的定义CFolderViewImplFolder_CreateInstance是:

CFolderViewImplFolder实施IShellFolder2amd IPersistFolder2。我在这里找到了用于为打印机创建快捷方式的类似代码: https ://www.codeproject.com/Articles/596642/Creating-a-shortcut-programmatically-in-Cplusplus 和 https://msdn.microsoft。 com/en-us/library/aa969393.aspx#Shellink_Item_Identifiers

一旦获得 IShellFolder 的类标识符,就可以调用 CoCreateInstance 函数来检索接口的地址。然后您可以调用该接口来枚举文件夹中的对象并检索您正在搜索的对象的项目标识符的地址。最后,您可以在调用 IShellLink::SetIDList 成员函数时使用该地址来创建对象的快捷方式。

我修改了

或者

但是 pVirtualFolder 仍然是 NULL,并且打印出“找不到对应的接口”。

我用的时候有什么问题CoCreateInstance吗?或者我不应该使用这个解决方案?有任何示例代码吗?

0 投票
1 回答
1354 浏览

java - 什么是 java clsid ?我在哪里可以找到或编写任何 java 版本的 clsid?

我的运行 jar 文件有问题.....请解释一下这个 CLSID

什么是...... “8AD9C840”“044E”“11D1”“B3E9”“00805F499D93”来这个代码如何写这个或者我可以找到它的java版本......

现在我的问题是如果java版本改变了那么我该如何编辑这个CLSID代码......

0 投票
3 回答
881 浏览

vb.net - 通过 Visual Basic 错误访问 Outlook

我正在尝试创建一个程序,该程序从 Outlook(2007 桌面版)收件箱中检索所有电子邮件并将它们放入 DataGridView。

代码:

当我尝试构建项目时,出现以下错误:

System.Runtime.InteropServices.COMException (0x80040154):检索具有 CLSID {0006F03A-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(HRESULT 异常:0x80040154(REGDB_E_CLASSNOTREG) ))

更新

我已将编译器 CPU 更改为 x86 和 x64,这并不能解决错误。

目标平台

0 投票
0 回答
76 浏览

javascript - 如何通过javascript访问chrome中的签名板ActiveX对象?

此跨签名板在 Google Chrome 中不起作用,但它适用于 IE。

我想我会改变 CLSID。

0 投票
0 回答
369 浏览

vba - 告诉 VBA 查看 64 位注册表视图

我想将一个分配ArrayList给一个变量。

两个选项都失败:

运行时错误“-2146232576 (80131700)”:
自动化错误

我发现CLSID存在于注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID

CLSID 注册表 system.collections.arraylist

Office 是 32 位的,Windows 是 64 位的。我不熟悉注册表,但从我所读到的内容看来,32 位 Office 正试图在某些 32 位 Windows 位置(视图)中找到 ArrayList,而它实际上位于 64 位位置。可以吗?如何让应用程序从正确的位置获取 ArrayList?

看来,要访问替代注册表视图,我应该以某种方式使用标志 KEY_WOW64_64KEY(值 0x0100),但我发现的示例太大而无法理解(eg1eg2)。我不想编辑注册表数据,我只想告诉 VBA 我正在使用 64 位 Windows,所以我需要的对象是在它期望的其他地方找到的。

0 投票
0 回答
1597 浏览

c# - 创建新对象时出现异常“使用 CLSID 创建 COM 组件的实例”

我有使用 IIS 发布的 C# 项目。试图调试网页,发现在代码行

网页卡住了,它一直在加载一些东西。10-20 分钟后,它停止加载并出现错误。

由于以下错误,从 IClassFactory 创建具有 CLSID {AD0C0100-CE10-11DE-8F7A-005056C00008} 的 COM 组件实例失败:80080005 服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))。

有任何想法吗?

这就是 SilApi 的样子:

这就是 IsilApi 的样子: