操作无法完成。 ClassFactory无法提供请求的类

时间:2009-12-11 20:53:13

标签: visual-studio visual-studio-2008

在Visual Studio 2008中,突然间,当我尝试将现有项添加到项目时,我收到此错误:

  

无法完成操作。 ClassFactory无法提供所请求的类

由于我昨天安装了VS 2010 Beta 2,我刚刚在此之前进行了系统还原,看看是否是原因。事实并非如此。

我想我知道造成这种情况的原因,但我不知道如何修复它。我认为这是由于尝试修复另一个Visual Studio问题引起的,如本主题所述:

AnswerEvent log error 4201 - ERROR WMI INSTANCE NOT FOUND

我运行了帖子中描述的长程序,首先是“好女士们和绅士,这是我们发现的;”。它解决了我在服务器资源管理器无法正常工作时遇到的问题,但我认为由于权限问题,它可能导致了我当前的问题。

如果是这样,有谁知道我需要修复哪些权限?有没有办法可以找到答案?或者您对我可以做些什么来解决这个问题有任何其他想法? (我还没有尝试过修复安装,因为我希望找到一个不会花那么长时间的解决方案。)

6 个答案:

答案 0 :(得分:4)

在devenv.exe兼容性设置上启用“禁用可视主题”复选框会导致此问题。

请参阅:http://connect.microsoft.com/VisualStudio/feedback/details/532500/visual-studio-responses-with-classfactory-cannot-supply-requested-class

这很不幸,因为Visual Studio 2008 UI在禁用视觉主题的情况下反应明显更快。

答案 1 :(得分:1)

使用these SysInternals tools中的Process Explorer,您可以查看应用程序尝试访问的文件和注册表设置,并筛选失败的尝试。一开始它是一个绝大多数的信息,但它为您提供了应用程序尝试执行的所有内容的完整图片,您可以开始查看打开/读取文件/注册表设置的失败,以帮助确定问题的原因像这样。当然,您可以查看每个文件或注册表项的权限(是的,注册表项具有权限就像文件一样,这可能会导致问题,因此请注意这一点)并放宽权限以尝试解决问题。

编辑: 您应该检查这些密钥的权限。请注意,您拥有不同用户/角色的权限。如果我同时属于管理员和用户组,并且管理员组具有“读取”权限,但用户组具有“读取”权限的“拒绝”复选框,则拒绝实际上优先,并且将阻止您的帐户访问注册表项。在程序试图将值写入注册表项的情况下,“完全控制”权限使用相同的概念。我认为失败中应该有一些东西表明它试图用钥匙做什么。

我也在"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7}"下了。在此之下,HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{DC1C5A9C-E88A-4dde-A5A1-60F82A20AEF7}\InProcServer32\具有默认值"%SystemRoot%\System32\comdlg32.dll"。这是应用程序查找类的dll的方式。它通过GUID查找,路径告诉它从哪个DLL加载类。因此,请确保列出的路径实际上具有该DLL,并且DLL文件也具有适当的权限。再次,检查权限对话框中列出的所有组/角色,以确保Deny列中没有复选框,并且选中Allow列以允许您所属的至少一个角色具有读访问权。 / p>

答案 2 :(得分:1)

好的,我使用的是安装了VS2008的Windows 7 x64。

为vc ++更改了一个重新发送的设置是使用不同的兼容模式(vista sp2)运行它。

将其更改回xp sp3并且消息(操作无法完成.ClassFactory无法提供请求的类)消失了。

答案 3 :(得分:0)

  

(我还没有尝试修复安装,   因为我希望有一个解决方案   不会花那么长时间。)

如果您还没有找到解决方案,修复您的Visual Studio安装似乎是目前最好的解决方案 - 您似乎已经投入了更多时间来追踪违规.dll而不是修复安装。

我搜索了你的问题解决方案几个小时(似乎你也有 - 几乎没有一个相关的论坛没有你的帖子)刚刚发现没有任何特定于你的症状你还没试过。

答案 4 :(得分:0)

我们通常通过运行来解决这个问题:

Windows XP 上:

secedit /configure /cfg %windir%\repair\secsetup.inf /db secsetup.sdb /verbose

Windows Vista 上:

secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose

以管理员身份。请确保不要在中途停止,并在执行此操作之前备份您的注册表。

这将恢复所有注册表权限,这通常会导致大多数WMI问题。

答案 5 :(得分:0)

哈!我遇到了同样的问题,并在this link中找到了,它提出了一个很好的解决方案。这是一段摘录:

  

以前,我和你一样,我很郁闷,但不是那么自愿,我搜索了很多网页,但是没有解决方案,所以我决定自己调查一下。我的笔记本有一个书写板,但我不使用书写板,所以我关闭了“平板电脑输入服务”。一世   发现“devenv.exe”将执行“wisptis.exe”。我知道通常“wisptis.exe”被执行(通过)“Tablet PC输入服务”。所以我打开“平板电脑输入服务”试试。结果:让我惊喜和快乐!我的问题解决了!

但是,我发现了另一个问题: 如果你从一个启动器启动visual studio,比如JetToolbar(和我一样),你会得到一个带有经典主题的VS--也就是说,一个普通的老式经典关闭框,最小化按钮和恢复按钮。但是如果你从开始菜单或runbox(只是输入devenv)启动VS,那么它将以正常主题开始。现在,如果你得到经典主题,你会得到“打开项目”等错误。如果你得到常规主题,你没有问题。因此,我自己的问题与我正在使用的发射器有关。

对于最后一期 - 我找到了解决方案:如果您转到应用程序文件并单击属性,则可以选择“禁用视觉样式” - 确保您的启动器不是视觉风格。 VS无法正常使用它们。