2010-04-13 6 views
1

C#의 셸 확장을 사용하여 매우 간단한 컨텍스트 메뉴를 만들었습니다. Windows XP 32 비트에서는 잘 작동하지만 Windows 7에서는 64 비트 메뉴 항목이 나타나지 않습니다.컨텍스트 메뉴 Windows 7 64 비트에서 셸 확장이 작동하지 않습니다.

설치 프로그램을 x64로 빌드하려고했지만 효과가 없습니다.

간단한 소스는 ContextMenu를 포함하고 설치 프로젝트는 here입니다. Wow6432가 등록 동일한 설치 프로젝트에 의해 처리 나는이 문제에 대한 도움말/제안에 대한 감사 것이다 전역 어셈블리 캐시

를 추가해야처럼

보인다.

답변

3

나는 Esposito가 작성한 코드를 멀리하지 말 것을 강력히 권한다. 늘 그렇듯이 ShellExt 폴더의 P/Invoke 선언은 완전히 잘못되었으므로 64 비트 코드에서는 작동하지 않습니다. 이 코드를 게시하는 것은 처음에는 매우 무책임한 일이었습니다. 셸 확장에서는 4.0 이전의 .NET CLR 버전을 사용해서는 안됩니다. 당신이 그것을 구출하려는 경우 pinvoke.net을 방문하십시오.

+0

나는 이것을 C++로 작성했는데, 전혀 문제가 없으므로, 유용한 조언을 구할 수있다. :) –

1

Visual Studio에서 DLL의 플랫폼을 확인하고 64 비트인지 확인하십시오. 64 비트 프로세스는 프로세스 공간에 32 비트 DLL을로드 할 수 없으며 그 반대도 마찬가지입니다.

DLL의 64 비트 버전을 빌드하려면 Visual Studio의 구성 관리자를 사용하여 새 솔루션 플랫폼을 만드십시오. X86 또는 모든 플랫폼 대신 X64를 선택하고 프로젝트를 다시 빌드하십시오. 스크립팅 된 빌드를 사용하는 경우 C# 컴파일러의 경우 command-line switches도 있습니다.

+0

또한 "BadImageFormatException 처리되지 않았습니다"및 이에 대한 권장되는 솔루션은 x86 용 빌드를 변경하는 것입니다. –

+0

참조는 무엇입니까? 프로젝트에서 32 비트 DLL을 참조합니까? 이렇게하면 64 비트 Windows 탐색기 호환성이 제한됩니다. –

+0

나는 ShellExtension을 사용하여 32 비트 DLL 인 Shell32.dll을 사용하고 있습니다. –

관련 문제