HRESULT 异常:0x80040111 (CLASS_E_CLASSNOTAVAILABLE)

2023-12-06

使用 .Net 4.0 / WPF 应用程序 / C#

我的应用程序中有以下代码,当Select单击按钮。

OpenFileDialog fdgSelectFile;
bool? dialogResult;

try
{
    fdgSelectFile = new OpenFileDialog {DefaultExt = FileDialogDefaultExt, Filter = FileDialogFilter};
    dialogResult = fdgSelectFile.ShowDialog();
    if (dialogResult.HasValue && dialogResult.Value)
    {
        SelectedFilePath = fdgSelectFile.FileName;
        // do your stuff
    }
}

这段代码在其他机器上可以运行,但在我的机器上不行。它只是抛出一个异常 - 如下所示 - 当Select按钮被点击。

2015-04-28 14:33:47,453 [1] ERROR XXXX.XXXX.XXXX.ViewModels.UploadViewModel - SelectFile - System.Runtime.InteropServices.COMException (0x80040111): Creating an instance of the COM component with CLSID {DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7} from the IClassFactory failed due to the following error: 80040111 ClassFactory cannot supply requested class (Exception from HRESULT: 0x80040111 (CLASS_E_CLASSNOTAVAILABLE)).
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)
   at Microsoft.Win32.OpenFileDialog.CreateVistaDialog()
   at Microsoft.Win32.FileDialog.RunVistaDialog(IntPtr hwndOwner)
   at Microsoft.Win32.FileDialog.RunDialog(IntPtr hwndOwner)
   at Microsoft.Win32.CommonDialog.ShowDialog()
   at XXXX.XXXX.XXXX.ViewModels.UploadViewModel.SelectFile(Object param) in c:\XXXX\XXXX\Client\XXXX.XXXX.XXXX\ViewModels\UploadViewModel .cs:line 176

查出错误原因是comdlg32.dll from Microsoft.Win32命名空间,内部PresentationFramework.dll程序集,我在注册表中查询了此 CLS ID

reg query HKCR\CLSID | find /i "{DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7}"

这就是它所说的

HKEY_CLASSES_ROOT\CLSID{DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7}


我也尝试过以下方法

  1. As per thisSO帖子,我尝试注册dll,但它回来说

    [窗口标题] RegSvr32

    [内容] 模块“comdlg32.dll”已加载,但入口点 未找到 DllRegisterServer。

    确保“comdlg32.dll”是有效的 DLL 或 OCX 文件,然后尝试 再次。

    [OK]

  2. As per thisSO帖子,我尝试改变Permissions,但没有运气


除了重新映像计算机或重新安装 Windows 之外,还有其他方法可以解决此问题吗?

如果这有帮助:我的机器上安装了 .Net FrameWork v3.5/ v4.0 / v4.5.1 & v4.5.2PresentationFramework.dll在文件夹内的所有位置都可用

v3.5   : C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v3.5\Profile\Client
v4.0   : C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0
v4.5   : C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5
v4.5.1 : C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1
v4.5.2 : C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2

抛开Windows安装损坏的可能性不谈,这实际上是一个相当阴险的问题,是由于Windows 7及以上版本中“视觉主题”被关闭而引起的。

要重现它,您可以使用一个正在运行的 WPF 应用程序并修改其兼容性设置(右键单击 Windows 资源管理器中的 .exe,然后选择“首选项”并从“兼容性”选项卡中选中“禁用视觉主题”)。然后,尝试运行该应用程序,您会发现当您尝试显示 OpenFileDialog 或 SaveFileDialog 时它开始崩溃。

视觉主题也可以在操作系统级别关闭(例如,当使用高对比度主题时),并且它们通常在终端服务会话中或通过 WebEx 或某些其他桌面共享应用程序共享桌面时关闭。

不幸的是,我还没有解决方案,但根据 MSDN 的阅读,微软似乎在说,当桌面合成和视觉主题关闭时,你应该“提供替代代码路径”——无论这意味着什么。

在内部,OpenFileDialog 的实现有一个方法尝试初始化打开文件对话框 COM 控件的实例,当视觉主题关闭时该方法会失败

[SecurityCritical, SecurityTreatAsSafe]
internal override IFileDialog CreateVistaDialog()
{
    new SecurityPermission(PermissionState.Unrestricted).Assert();
    return (IFileDialog) Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7")));
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HRESULT 异常:0x80040111 (CLASS_E_CLASSNOTAVAILABLE) 的相关文章

  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 回发或回调参数无效。使用“”启用事件验证

    当我从客户端回发页面时 出现以下错误 我有修改客户端 asp ListBox 的 JavaScript 代码 我们该如何解决这个问题 错误详细信息如下 Server Error in XXX Application Invalid post
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 在wpf中移动鼠标

    我目前正在寻找一种在 wpf 中移动鼠标的方法 我发现的只是我无法可靠实现的非托管方法调用 有没有一种简单的方法可以将鼠标光标移动到某个地方 即 双击后 我肯定在这里遗漏了一些东西 添加对System Windows Forms dll的引
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • 如何从服务获取数据到活动

    在我的应用程序中 我有一项活动和一项服务 该服务将广播从 GPS 数据收集的消息 Activity 应该接收广播消息并更新 UI 我的代码 public class LocationPollerDemo extends Activity p
  • Rspec 规格和 Rake 规格给出不同的结果

    这似乎是最常被问到的问题 我在两者中运行时都有一个应用程序rake spec and rspec输出似乎不同 当使用 rspec spec p 命令时 会显示 0 个失败消息 而当使用 rake spec 时 会显示很少的错误 当你跑步时
  • 使用 Rcpp 处理 R 中的矩阵是否有限制?

    我试图用 R 开发一个程序来估计 Spearman 与 Rcpp 的相关性 我做到了 但它只适用于向量范围小于 45 00 50 000 的矩阵 我不知道为什么 但它只适用于那个维度 我想这种类型的信息是有限制的 也许如果我像 data f
  • java.lang.ClassNotFoundException: org.springframework.faces.security.FaceletsAuthorizeTagHandler

    我尝试添加 Spring Security Facelets 标签库 因为它是这样写的here 我在web xml中添加
  • 将 PHP 网站与 Wordpress 用户身份验证集成

    我有一个现有的 Wordpress 网站 如果用户想要访问其他内容 完整故事 过去故事的存档等 则需要登录 我使用 PHP 和 MySQL 构建了一个新网站 该网站将托管在不同的服务器上 该网站的目标受众是访问前面提到的文章网站的同一受众
  • SKEmitterNode 粒子动作不工作 iOS9 Beta

    我正在 iOS9 Beta 4 中测试我的应用程序 发现许多曾经在 iOS8 中运行的代码不再按预期运行 另一个例子是 SpriteKit 的 SKEmitterNode articleAction 属性 以下代码在 iOS8 上有效 但在
  • Azure WebJobs NuGet 包错误

    我想知道是否有人在 Visual Studio 模板上的 Azure WebJobs 队列示例上遇到过运行错误 在我更新 NuGet 管理器上的所有包后 运行的示例会发出问题 这是错误消息 System InvalidOperationEx
  • 另一个字符串的子字符串会阻止父字符串被垃圾收集吗?

    String samplel ToBeGarbageCollected String sample2 samplel substring 0 1 samplel null 我知道子字符串内部会保留原始字符串的引用 但通过明确定义sample
  • 如何将更改从骨架子存储库拉入生产超级存储库

    我正在使用奥里莉亚骨架其中包含用于不同目的的各种项目设置 但这更多的是一个一般性问题 即如何使用 git 做一些事情 如下所述 我希望能够将 GitHub 框架存储库中发布的更新合并到我实际正在处理的项目中 你会怎么做 目前 我刚刚在 sc
  • 使用过滤器编辑 site_url

    使用 WordPress 调用site url 返回完整的站点 URL http www example com 我想做的是添加一些东西 add something here 在带有过滤器的 URL 末尾 我期待的结果是 http www
  • 仅将函数应用于具有可变位置的一列

    我有一堆不同的文件 所有文件都包含标题为 ID 的列 但不一定位于所有文件中的同一位置 我有一个函数想要应用于所有文件中的 ID 以将它们更改为 NEWID 我知道如果我传入 ID 的列号 我可以非常简单地做到这一点 假设它是 5 列文件中
  • 整数与长混淆

    我看到很多人相信以下观点 VBA 将所有整数值转换为 Long 类型 事实上 即使是MSDN 文章 says 然而 在最近的版本中 VBA 会将所有整数值转换为 Long 类型 即使它们被声明为 Integer 类型 这怎么可能 考虑这个简
  • 我如何知道方法调用可能引发哪些异常?

    有没有办法知道 在编码时 执行 python 代码时会出现哪些异常 我最终在 90 的情况下捕获了 Exception 基类 因为我不知道可能会抛出哪种异常类型 阅读文档并不总是有帮助 因为很多时候异常可以从深处传播 而且很多时候文档未更新
  • OpenCV v1/v2错误:该功能未实现

    我正在尝试让 OpenCV 在我的 Ubuntu 机器上使用 Python 我已经下载并安装了 OpenCV 但是当我尝试运行以下 python 代码时 应该从网络摄像头捕获图像并将其推送到屏幕 import cv cv NamedWind
  • 您可以将脚本分配给页面元素(形状等)吗?

    我想为学生制作一个交互式幻灯片 我想添加形状 因此当您单击形状时 它将运行 Apps Script 脚本 这在 Google 表格中是可能的 所以 我认为你也可以用幻灯片来做到这一点 没有办法运行容器绑定脚本通过点击 Google 幻灯片中
  • 使用新的亚马逊服务搜索亚马逊示例

    我找不到新的亚马逊服务的工作示例 或者至少在过去几年内 无论我在标题中输入什么内容 最接近的工作示例都会返回一个空项目 代码是 Amazon ProductAdvertisingAPI client AWSECommerceServiceP
  • 如何在 Three.js 中获取顶点的绝对位置?

    据我所知var point object geometry vertices i 将返回相对位置x y and z对象几何内部的点 如果对象被移动 旋转或缩放 如何获得绝对位置 您可以像这样获取顶点的世界位置 const vertex ne
  • 如何从互不关注的号码池中生成随机数

    我有一个数字池 例如 3 6 7 11 20 我需要每个数字在我的集合中出现 x 次 我的解决方案是创建一个包含两个整数 num numOfAppearnces 的类 我们称之为 元素 我在 arrayList 中创建了一个 元素 池 然后
  • 对 LAPACK 和 BLAS 子例程的未定义引用

    我试图了解 Fortran 中的 BLAS 和 LAPACK 如何工作等等 所以我编写了一个生成矩阵并将其反转的代码 这是代码 program test Implicit none external ZGETRF external ZGET
  • HRESULT 异常:0x80040111 (CLASS_E_CLASSNOTAVAILABLE)

    使用 Net 4 0 WPF 应用程序 C 我的应用程序中有以下代码 当Select单击按钮 OpenFileDialog fdgSelectFile bool dialogResult try fdgSelectFile new Open