/u 인수가 작동하지 않을 때 RegSvr32로 처음 추가된 COM dll을 어떻게 등록 취소합니까?

StackOverflow https://stackoverflow.com/questions/19725

문제

맞습니다. 처음에는 다음을 실행했습니다.

c:\regsvr32 Amazing.dll

그런 다음 (실수로 – 덧붙일 수도 있음) 다시 실행해야 했고, (실제로) 'Amazing.dll'의 새 버전이 출시되었을 때 다시 실행해야 했습니다.네 - 알아요 지금 나는 다음을 실행했어야 했다:

c:\regsvr32 /u Amazing.dll

미리 - 하지만 야!잊어버렸어요.

추적을 위해 VS에 COM 참조를 추가하면 'Amazing'의 3개 인스턴스가 모두 동일한 위치(c:\Amazing.dll)를 가리키는 것을 볼 수 있습니다. regsvr32 /u 두 번째로 참조 중 하나를 제거합니다. 아무 작업도 수행하지 않습니다.

이러한 참조를 어떻게 제거합니까?regedit 시나리오를 보고 있나요?- 그렇다면 - 뭐 정확히 키 중 하나를 삭제하면 어떻게 되나요???

건배

도움이 되었습니까?

해결책

개체의 GUID는 변경되어서는 안 됩니다.즉, COM 개체를 등록한 후에는 다시 등록해도 레지스트리에 아무것도 추가되어서는 안 됩니다.

프로젝트에 추가 COM 인터페이스나 개체를 추가하지 않은 경우.

어쨌든 이것이 일회성 거래인 경우(그렇게 들리는 것처럼 들림) regedit를 열고 불필요한 키를 수동으로 삭제하십시오.

다른 팁

Win95 이후로 여전히 떠다니는 MS 도구가 있습니다. 이 도구는 레지스트리를 검사하고 더 이상 유효한 파일을 가리키지 않는 COM 키를 찾는 등 RegClean이라는 작업을 수행합니다(여기에서 찾았습니다: http://downloads.zdnet.com/abstract.aspx?assetid=881470&node=2094) 특히 매 빌드 후에 새로운 COM GUID를 생성하는 VB의 레거시 COM 항목을 망칠 때 일부 장소에서 여전히 사용하는 것을 보았습니다.

따라서 해당 파일을 받은 다음 등록을 취소하고 파일을 삭제하거나 이동한 다음 앱을 실행하면 "고아" 항목이 정리됩니다.

RegEdit을 사용하여 키를 제거하기로 결정한 경우 클래스 ID와 guid 항목을 제거해야 할 수도 있습니다.

나는 이전에 COM을 사용하면서 끔찍한 혼란에 빠졌습니다.불행히도 각 참조를 삭제하는 레지스트리를 통해 길을 선택해야 했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top