打开获取目录对话框时,COM类工厂错误80040154

本文关键字:COM 工厂 错误 80040154 获取 对话框 | 更新日期: 2023-09-27 18:07:47

我知道这个问题的通常原因与组件编译到的平台有关,我过去也遇到过这个问题。然而,这是来自单个用户的报告,并且在他试图打开对话框以选择文件或目录时发生。这里我没有使用任何花哨的组件,只是使用标准组件。其中一个堆栈跟踪中的相关行是:

使用CLSID为组件检索COM类工厂{DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7}由于以下原因失败错误:80040154。在System.Windows.Forms.OpenFileDialog.CreateVistaDialog ()System.Windows.Forms.FileDialog。运行dialogvista (IntPtr hwndownner)在System.Windows.Forms.FileDialog。运行对话框(IntPtr hWndOwner)System.Windows.Forms.CommonDialog。显示对话框(IWin32Window所有者)System.Windows.Forms.CommonDialog.ShowDialog ()ScruffyDuck.AirportDesignEditor.MainForm.getOpenFileInfo(字符串initialDirectory, String filter)

我在注册表中搜索了这个CLSID并找到了

% SystemRoot % ' System32系统' comdlg32.dll

我想这并不奇怪。我认为,由于有许多其他用户没有这个问题,这一定与用户设置有关。在这种情况下,如果你能给他提些建议,我将不胜感激。

多谢

打开获取目录对话框时,COM类工厂错误80040154

我现在只是猜测,因为这不是编程问题,所以如果我没有帮助,不要-我,只是给出一些想法…: P

这里的问题是系统不能从CLSID指定的COM类中生成COM对象。发生这种情况的原因有很多:

  • comdlg32.dll未注册,尝试注册regsvr32 comdlg32.dll
  • 系统帐户对持有CLSID {DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7}的注册表项没有完全控制(权限)。您可以通过导航(或搜索注册表)到该键,右键单击它,并通过选择Permissions...给系统帐户完全控制它。
  • 也可以尝试上面的管理员帐户。
  • comdlg32.dll已损坏。如果间谍软件或其他恶意程序试图将自己挂钩到"打开文件"或"浏览目录"对话框,并因此修改了库,则可能发生这种情况。在这种情况下,你必须重新安装lib…或窗口。要检查lib是否ok,请对其进行MD5哈希,并与工作系统上的lib的MD5哈希进行比较。它们应该是相同的。
好吧,希望我能帮到你。:)