ClassFactory无法提供请求的类0x80040111错误:-2147221231

时间:2009-03-09 01:15:42

标签: .net com shell-extensions

使用Visual Studio 2008我在尝试在visual basic中打开标准保存文件对话框时首次遇到此问题。到目前为止,我经过无效的搜索工作。现在我发现任何会导致保存/打开对话框(例如ctrl-O)的操作也会失败。我搜索得更多,但仍然不知道如何修复它。

东西我知道: 它不是Visual Studio错误,它显然可以在任何其他应用程序中出现(这就是为什么搜索它很烦人)

它与.NET或COM有关,我尝试重新安装所有的.NET而没有运气,而且我从来没有使用COM,我甚至都不知道它是什么。

缺少某些内容,放错地方,或者可能是DLL版本问题。

我真的不想处理卸载VS2008或MS Office(我发现建议的结果)或任何其他大型应用程序。

4 个答案:

答案 0 :(得分:1)

所以,有人在某个地方试图共同创造一些它认为需要完成其工作的对象。这可能是也可能不是Visual Studio对象。由于它在Save / Open对话框中显示,因此它很可能是一个shell对象。

最可能的解释是对象的注册表项已经以某种方式被破坏,或者导出对象的dll以某种方式被破坏。对于后者,它可能完全丢失,或者由于某种原因处于不良状态。

你可以尝试做的一件事是在可能的候选DLL上运行regsvr32,但这只是在黑暗中拍摄。

另一个更高级的选项是将调试器(例如ntsd或windbg)附加到它自己的Visual Studio进程并在系统dll中的CoCreateInstance()上设置断点(确保在其中查找其确切的签名)头文件 - 它可能是#defined到其他东西)。然后获取它传递的对象的GUID作为CoCreateInstance()的参数。在您的注册表(或没有此问题的朋友注册表)中查找此内容应该可以让您了解需要使用的DLL。

答案 1 :(得分:1)

这里的根本问题是CoCreateInstance失败。如果没有附加调试器并打破CoCreateInstance,那么追踪问题是非常困难的。即使你花时间做这件事,你也不太可能修复错误。

我同意重新安装是最后的选择。但中间步骤是尝试修复安装。如果重新插入VS Setup Disk,其中一个选项将是“修复”安装。您可能必须通过“添加/删除程序”才能获得此选项。

修复比卸载/重新安装快得多,很可能会解决这个特定问题。

修改

OP报告修复成功,但没有修复错误。您是否可以检查事件日志并查看是否为此故障生成了更具体的错误?

答案 2 :(得分:1)

我遇到了与VS 2008类似的问题,幸运的是它通过以下解决方案得到了解决。试试这个!!

找到devenv.exe。 右键单击>属性>取消选中“禁用可视主题选项”

答案 3 :(得分:0)

取消选中Disable Visual Themes对我不起作用,但在xp兼容模式下运行修复了它。我假设这个问题是一个缺失的DLL。