2011-10-05 3 views
1

필자는 ATL을 사용하여 셸 확장 (IContextMenu, IShellExtInit, IExtractIcon & IPersistFile)을 만들었습니다.셸 확장은 Windows 탐색기에서 작동하지 않지만 다른 프로그램에서 작동합니까?

재미있는 것은 모두가 같은 & "무료 사령관" "총 사령관"와 같은 일부 파일 - 관리자 좋은,하지만 완전히 윈도우 탐색기에서 실패 할 것입니다 :


내가 바로 클릭 내 TC ("Total Commander")에 등록 된 파일 (예 : *.000)이 있으면 확장 프로그램이 작동합니다. 내 로그와 상황에 맞는 메뉴에서 아이콘이 표시된 항목이 나타납니다.

하지만 Win-Explorer를 사용하면 아무 일도 일어나지 않습니다! 아무 로그 항목도 나타나지 않습니다., 컨텍스트 메뉴에 증거가 없습니다 - 아무 것도 없습니다! 완전한 PC 재시작도 도움이되지 않습니다. 물론

CLSIDShellEx\MyX\ContextMenuHandlersShellEx\IconHandler 키뿐만 아니라 Explorer의 ...\Shell Extensions\Approved\, 그들은 모두 포인트를 등록했다. Windows 7을 사용합니다.

여기서 무엇을보고 싶습니까?

+7

64/32 비트? OS가 64 비트 인 경우 탐색기는 64 비트가되며 모든 셸 확장은 64 비트 여야합니다. Total Commander의 최신 버전은 32 비트 전용입니다. –

+0

@SevaTitov : 맞아. 나는 64 비트 OS를 사용하지만 32 비트 앱을 컴파일하고 등록했다. 그래서 InprocServer32 대신 64 비트 DLL을 위해 어떤 키를 만들어야합니까? – Tar

+0

이 바이너리를 64 비트 및 regsvr32로 컴파일하면됩니다. 레지스트리 키는 여전히 InprocServer32입니다. –

답변

0

@SevaTitov 내 질문에 대답하지만, 주석으로이 문제에 실수를 한단다 사람을위한 미래의 참조에 대한 너무 :

@SevaTitov : 당신의 OS가 64 비트 인 경우

, 탐색기가 될 것입니다 64 비트뿐만 아니라 모든 셸 확장은 64 비트 여야합니다. 총 사령관의 현재 버전은 32 비트 전용

그 일, Registry Redirector는 32 비트 프로그램에있을 때, 그것은 ("리디렉션") 64 비트 REG-항목을 숨 깁니다,있다

와 같은데 그 반대의 경우도 마찬가지입니다.

내 32 비트 레지스트리 뷰어 응용 프로그램에서 이러한 키를 볼 수 있었지만 레지스트리의 일부만 볼 수 있기 때문에 혼란 스러웠습니다 (64 비트 부분을 64 비트 부분으로 표시해야 함) 64 비트 Windows 컴퓨터의 기본 regedit.exe와 같은 비트 뷰어)

+2

레지스트리에 대해서만 【단지】가 아닙니다. 64 비트 탐색기는 64 비트 DLL 만로드 할 수 있으므로 아무리해도 32 비트 셸 확장을 사용할 수 없습니다. 일반적으로 64 비트 OS 용 셸 확장의 두 가지 버전, 즉 32 비트 및 64 비트 버전의 셸 확장을 호스팅 프로세스의 비트 수와 일치시켜야합니다. –

관련 문제