2012-12-06 16 views
8

Chciałbym rozwinąć rozszerzenie powłoki (obsługa menu kontekstowego) zgodną zarówno z Windows XP SP2 (32-bit) i Windows 7 64-bit.Używanie 32-bitowych rozszerzeń powłoki w systemie Windows 7 64-bitowym

Czy możliwe jest uruchamianie 32-bitowych rozszerzeń powłoki w 64-bitowym systemie Windows, czy rozszerzenie powłoki musi zostać przeniesione/przebudowane na 64-bitowe, aby mogło być używane w 64-bitowym systemie Windows 7?

Czy są jakieś wady/znane problemy z korzystaniem z 32-bitowych rozszerzeń powłoki w 64-bitowych systemach operacyjnych?

32-bitowe aplikacje uruchamiane w porządku w 64-bitowym systemie Windows, ale nie jestem pewien rozszerzenia powłoki, ponieważ, jeśli moje rozumienie jest poprawne, rozszerzenia powłoki są in-proc serwery COM załadowany do procesu Explorer który powinien być procesem 64-bitowym w 64-bitowym systemie Windows ... lub jest formą "32-bitowej emulacji" przewidzianej dla 32-bitowych rozszerzeń powłoki działających w 64-bitowym systemie operacyjnym?

+0

Brak opcji. Po prostu dodaj kolejną konfigurację do swojego projektu, który wykorzystuje cel Win32 i cel x64. Jeśli twój kod jest czysty, nie będziesz miał problemów z wygenerowaniem zarówno wersji x86, jak i wersji x64 twojej biblioteki DLL. –

+0

@HansPassant: To brzmi jak prawdziwa odpowiedź. –

+0

@HansPassant: Zastanawiam się również, czy 32-bitowe i 64-bitowe rozszerzenia powłoki powinny mieć _różne_ identyfikatory GUID. –

Odpowiedz

10

Rozszerzenie powłoki to tylko biblioteka DLL, a regułą jest, że aplikacje 32-bitowe mogą ładować tylko 32-bitowe biblioteki DLL, a aplikacje 64-bitowe mogą ładować tylko 64-bitowe biblioteki DLL. Nie da się tego obejść.

32-bitowe rozszerzenie powłoki może być nadal przydatne w systemie 64-bitowym, ponieważ oznacza to, że wszystkie 32-bitowe aplikacje innych firm, które ładują rozszerzenia powłoki, będą działały. Na przykład TortoiseSVN jest dostarczany i instalowany zarówno w wersji 32-, jak i 64-bitowej, i tak w 64-bitowych systemach Windows nadal można uzyskać dostęp do menu kontekstowych TortoiseSVN z aplikacji 32-bitowych (takich jak menedżer plików innej firmy).

Ale sam Explorer jest 64-bitowy natywny w 64-bitowym systemie Windows, więc jeśli chcesz, aby działał w Eksploratorze, potrzebujesz 64-bitowej wersji rozszerzenia.

0

Rozszerzenia powłoki to komponenty COM. Jeśli zainstalujesz go jako serwer poza procesem, system Windows (DCOM) powinien zająć się wszystkimi 32-bitowymi zestawami rozrządowymi 32 <.

Kompilator MIDL utworzy 64-bitowy kod pośredniczący, który zostanie załadowany.

+2

W rzeczywistości tak nie działa ... –

+1

To nieprawda.Obsługujące zawartość menu są rozszerzeniami procesowymi i nie można ich implementować jako procesów poza procesem. https://msdn.microsoft.com/en-us/library/windows/desktop/dd758089(v=vs.85).aspx. Rozproszony COM (DCOM) nie ma zastosowania – MickyD

+0

@Micky link nie obsługuje roszczenia. Masz inne referencje? –

0

Możesz używać eksploratora 32-bitowego, takiego jak xplorer² w 64-bitowym systemie Windows. Są w stanie obsłużyć 32-bitowe rozszerzenia DLL, które mogą posłużyć do wyszukiwania treści, podglądu danych oraz wyświetlania w menu kontekstowym. Wbudowany eksplorator jest 64-bitowy, który ignoruje rozszerzenia 32-bitowe.