2009-03-09 3 views
1

Visual Studio 2008을 사용하면 Visual Basic에서 표준 저장 파일 대화 상자를 열려고 할 때 처음에이 문제가 발생했습니다. 지금까지 나는 무익한 검색을 한 후에 그것을 연구했다. 이제는 저장/열기 대화 상자 (예 : Ctrl-O)를 유발할 수있는 모든 작업도 실패합니다. 나는 더 많은 것을 검색했지만 여전히 그것을 고치는 법을 모른다.ClassFactory에서 요청한 클래스를 제공 할 수 없습니다. 0x80040111 오류 : -2147221231

물건 알 수 있습니까 : 그것은 (이 성가신에 대한 이유를 검색하는), 분명히, 그것은 .NET 또는 COM 중 관련이

다른 응용 프로그램의 수에서 발생할 수있는 비주얼 스튜디오 오류 아니다 I 행운을 들이지 않고 .NET을 모두 다시 설치하려고 시도한 적이 없으며 COM과 함께 한 번도 본 적이 없으며 실제로 무엇인지 모릅니다.

뭔가 잘못되었거나 잘못 배치되었거나 DLL 버전 문제 일 수 있습니다.

저는 VS2008 또는 MS Office (한 가지 결과로 제안 됨) 또는 다른 큰 응용 프로그램을 제거하는 것을 정말로 다루고 싶지 않습니다.

+0

잘못된 쉘 확장자가 있습니다. 시스 인 턴스 (SysInternals)의 자동 실행 유틸리티 (AutoRuns utility)를 사용하여 공격을 시작하십시오. –

+0

수정 한 적이 있습니까? VS 2008에서 갑자기 같은 문제가 발생합니다. 기존 항목을 프로젝트에 추가하려고하면 문제가 발생합니다. –

답변

1

누군가는 어딘가에서 CoCreate하려고 시도하고있는 일부 개체를 생각하고 있습니다. 이것은 Visual Studio 개체 일 수도 있고 그렇지 않을 수도 있습니다. 저장/열기 대화 상자에 나타나기 때문에 쉘 객체가 될 수 있습니다.

가장 가능성있는 설명은 개체에 대한 레지스트리 항목이 어떤 식 으로든 손상되었거나 개체를 내보내는 dll이 어떤 식 으로든 손상된 것입니다. 후자의 경우 그것은 완전히 실종되거나 어떤 이유로 든 나쁜 상태 일 수 있습니다.

당신이 시도해 볼 수있는 한 가지는 가능한 후보 DLL에 대해 regsvr32를 실행하는 것입니다.하지만 그것은 어둠 속에서 촬영하는 것입니다.

또 다른 고급 옵션은 디버거 (예 : ntsd 또는 windbg)를 Visual Studio 프로세스에 연결하고 시스템 DLL의 CoCreateInstance()에 중단 점을 설정하는 것입니다 (정확한 서명을 찾아야합니다. 헤더 파일 - 다른 것으로 정의 될 수 있습니다.) 그런 다음 CoCreateInstance()에 인수로 전달할 객체의 GUID를 가져옵니다. 레지스트리 (또는이 문제가없는 친구 레지스트리)에서이 DLL을 찾으려면 어떤 DLL을 엉망으로 만들 필요가 있는지에 대한 좋은 아이디어를 제공해야합니다.

+0

고마워, 내가 어떻게 될지 알게 될거야. –

+0

OK, 그래서 windbg를 첨부하고 CoCreateInstance가 Ole32에 있다고 생각하지만, VS에 초점을 둘 때마다 중단 점이 발생한다. –

+0

그래, CCI는 많이 불립니다. 실패한 것이 필요합니다. 중단 점 매크로를 사용하여 GUID를 덤프하십시오. 다음과 같이하십시오 : bp CoCreateInstance "dt GUID esp + 0x4; g" 스택의 GUID에 대한 실제 오프셋을 계산해야합니다. 전 4를 사용했습니다. 그러면 GUID가 인쇄되고 계속됩니다. –

1

여기서의 근본적인 문제는 CoCreateInstance가 실패하고 있다는 것입니다. 디버거를 연결하고 CoCreateInstance를 중단하지 않으면 문제가 무엇인지 추적하는 것이 상당히 어려울 것입니다. 이 작업을 수행하는 데 시간을 할애해도 오류를 수정할 수는 없습니다.

다시 설치하는 것이 최후의 수단이라는 데 동의합니다. 그러나 중간 단계는 설치를 복구하는 것입니다. VS 설치 디스크를 다시 넣으면 옵션 중 하나가 설치를 "복구"하는 것입니다. 이 옵션을 사용하려면 프로그램 추가/제거를 거쳐야 할 수도 있습니다.

복구는 제거/다시 설치보다 훨씬 빠르며이 특정 문제를 해결할 가능성이 큽니다.

편집

OP보고 수리는 성공했지만 오류를 수정하지 않았다. 이벤트 로그를 확인하고이 오류에 대해 더 구체적인 오류가 생성되는지 확인할 수 있습니까?

+0

복구가 오류없이 완료되었지만 문제가 해결되지 않았습니다. –

+0

이벤트 로그에 아무 것도 나타나지 않습니다. –

1

나는 VS 2008과 비슷한 문제에 봉착했으며 운 좋게도 아래의 해결 방법으로 해결되었습니다. 이 시도!!

devenv.exe를 찾으십시오. 오른쪽 클릭> 속성> 비주얼 테마 해제 옵션 선택 해제

0

체크 표시하지 않음 Disable Visual Themes은 나를 위해 작동하지 않았지만 xp 호환 모드로 실행하면 해결되었습니다. 문제가 DLL이 없다고 가정합니다.