gpt4 book ai didi

c# - 从 .NET Windows 服务调用 Shell32.dll

转载 作者:可可西里 更新时间:2023-11-01 09:02:09 25 4
gpt4 key购买 nike

我有一个 .NET 4.0 库,它使用 Shell32 和 Folder.GetDetailsOf() 从 WTV 文件中获取元数据。我已经成功地将它用于控制台和 Windows 窗体应用程序,没有任何问题。但由于某种原因,当从 .NET 4.0 Windows 服务调用组件时,调用启动 Shell 类会导致 COM 错误。

库中失败的代码:

Shell32.Shell shell = new Shell();

错误:

无法将“System.__ComObject”类型的 COM 对象转换为接口(interface)类型“Shell32.Shell”。此操作失败,因为 IID 为“{286E6F1B-7113-4355-9562-96B7E9D64C54}”的接口(interface)的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(interface)(HRESULT 异常:0x80004002 (E_NOINTERFACE)) .

我阅读了单元线程、COM Interops、动态、PIA 等等,等等 :) 但是我发现的解决方案组合没有解决问题。它必须是来自另一个看不到 Interop 的线程的调用。请帮助:)

最佳答案

我最近在使用命令行应用程序(控制台)时遇到了同样的问题。事实证明,需要使用 [STAThread] 属性注释程序的 Main() 方法。还注意到,如果入口点用 [MTAThread] 注释,它会以完全相同的方式惨败。希望对您有所帮助。

关于c# - 从 .NET Windows 服务调用 Shell32.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com