Omówienie zagadnień dotyczących zgodności 32-bitowych programów w 64-bitowych wersjach systemu Windows

W tym artykule omówiono zagadnienia dotyczące zgodności i ograniczenia dotyczące programów 32-bitowych, które są uruchomione w 64-bitowych wersjach systemu Windows.

Dotyczy systemów: Windows 10 — wszystkie wersje, Windows Server 2012 R2
Oryginalny numer KB: 896456

Podsumowanie

64-bitowe wersje systemu Windows używają podsystemu Microsoft Windows-32-on-Windows-64 (WOW64) do uruchamiania programów 32-bitowych bez modyfikacji. 64-bitowe wersje systemu Windows nie zapewniają obsługi 16-bitowych plików binarnych ani sterowników 32-bitowych. Programy, które zależą od 16-bitowych plików binarnych lub sterowników 32-bitowych, nie mogą być uruchamiane w 64-bitowych wersjach systemu Windows, chyba że producent programu zapewnia aktualizację programu.

Mogą istnieć zagadnienia wpływające na zgodność lub wydajność programu. Możesz określić, czy program będzie miał problemy ze zgodnością lub wydajnością, testując program w jednej z 64-bitowych wersji systemu Windows.

W tym artykule opisano niektóre zagadnienia dotyczące zgodności dotyczące uruchamiania programów 32-bitowych w 64-bitowych wersjach systemu Windows. Ten artykuł nie porównuje 32-bitowych i 64-bitowych wersji systemu Windows ani różnych 64-bitowych systemów operacyjnych. W tym artykule przyjęto założenie, że rozumiesz różnicę między 32-bitowymi plikami binarnymi i 64-bitowymi plikami binarnymi.

Wprowadzenie

Wersje systemu Microsoft Windows oparte na systemie x64 są zoptymalizowane pod kątem uruchamiania natywnych programów 64-bitowych. Ponadto wersje systemu Windows oparte na systemie x64 używają podsystemu WOW64 do uruchamiania programów 32-bitowych.

Uruchamianie programów 32-bitowych

Podsystem WOW64 umożliwia uruchamianie programów 32-bitowych bez modyfikacji w wersjach systemu Windows opartych na architekturze x64. Podsystem WOW64 robi to, tworząc środowisko 32-bitowe w wersjach systemu Windows opartych na architekturze x64. Aby uzyskać więcej informacji na temat podsystemu WOW64, zobacz temat „Uruchamianie aplikacji 32-bitowych“ w części poświęconej 64-bitowej wersji systemu Windows w dokumentacji zestawu Microsoft Platform SDK. Aby wyświetlić ten dokument, odwiedź następującą witrynę internetową firmy Microsoft: Uruchamianie aplikacji 32-bitowych.

Zagadnienia dotyczące wydajności programu

Podsystem WOW64 tworzy środowisko 32-bitowe w wersjach systemu Windows opartych na architekturze x64. Niektóre programy 32-bitowe mogą działać wolniej w tych systemach operacyjnych niż w 32-bitowych wersjach systemu Windows. Alternatywnie niektóre programy 32-bitowe, które wymagają dużej ilości pamięci RAM, mogą wykazywać zwiększoną wydajność w wersjach systemu Windows opartych na architekturze x64. Ten wzrost wydajności występuje, ponieważ wersje systemu Windows oparte na architekturze x64 obsługują więcej pamięci fizycznej niż 32-bitowe wersje systemu Windows.

Aby uzyskać więcej informacji na temat różnic w zarządzaniu pamięcią między wersjami 64-bitowymi i 32-bitowymi systemu Windows, zobacz temat "Wirtualna przestrzeń adresowa" w części „Informacje o zarządzaniu pamięcią“ w dokumentacji zestawu Microsoft Platform SDK. Aby wyświetlić ten dokument, odwiedź następującą witrynę internetową firmy Microsoft: Wirtualna przestrzeń adresowa

Ograniczenia podsystemu WOW64

Podsystem WOW64 nie obsługuje następujących programów:

  • Programy skompilowane dla 16-bitowych systemów operacyjnych
  • Programy w trybie jądra, które są skompilowane dla 32-bitowych systemów operacyjnych

Programy 16-bitowe

Wersje systemu Windows oparte na systemie x64 nie obsługują programów 16-bitowych ani składników programów 16-bitowych. Emulacja oprogramowania, która jest wymagana do uruchamiania programów 16-bitowych w wersji systemu Windows opartej na architekturze x64, znacznie obniży wydajność tych programów.

Instalator 16-bitowy jest często używany do instalowania i konfigurowania programu 32-bitowego. Ponadto niektóre programy 32-bitowe wymagają poprawnego działania składników 16-bitowych. Chociaż programy 32-bitowe, które wymagają składników 16-bitowych, mogą działać poprawnie po ich zainstalowaniu, nie można użyć instalatora 16-bitowego do zainstalowania programu 32-bitowego. Programy wymagające składników 16-bitowych nie mogą być uruchamiane w wersjach systemu Windows opartych na architekturze x64.

Jeśli program 32-bitowy, który wymaga składników 16-bitowych, spróbuje uruchomić 16-bitowy plik lub składnik, program 32-bitowy zarejestruje komunikat o błędzie w dzienniku systemu. Następnie system operacyjny pozwoli programowi 32-bitowego na obsługę błędu.

Aby określić, czy program wymaga składnika 16-bitowego, zainstaluj i uruchom ten program. Jeśli program generuje komunikat o błędzie, skontaktuj się z producentem programu w celu uzyskania aktualizacji zgodnej z wersjami systemu Windows opartymi na architekturze x64.

Sterowniki 32-bitowe

Wersje systemu Windows oparte na systemie x64 nie obsługują sterowników 32-bitowych. Wszystkie sterowniki urządzeń sprzętowych i sterowniki programów muszą być skompilowane specjalnie dla wersji systemu Windows opartej na architekturze x64.

Jeśli program 32-bitowy próbuje zainstalować sterownik 32-bitowy na komputerze z systemem Windows w wersji x64, instalacja sterownika zakończy się niepowodzeniem. W przypadku takiego zachowania wersja systemu Windows oparta na architekturze x64 zgłasza błąd do programu 32-bitowego.

Jeśli program 32-bitowy próbuje zarejestrować sterownik 32-bitowy do automatycznego uruchamiania na komputerze z systemem Windows opartym na architekturze x64, moduł ładujący bootstrap na komputerze rozpoznaje, że sterownik 32-bitowy nie jest obsługiwany. Wersja systemu Windows oparta na systemie x64 nie uruchamia sterownika 32-bitowego, ale uruchamia inne zarejestrowane sterowniki.

Aby określić, czy program wymaga sterownika 32-bitowego, zainstaluj i uruchom program. Jeśli program generuje komunikat o błędzie, skontaktuj się z producentem programu w celu uzyskania aktualizacji zgodnej z wersjami systemu Windows opartymi na architekturze x64.

Dodatkowe zagadnienia

Przekierowywanie rejestru i pliku

Podsystem WOW64 izoluje 32-bitowe pliki binarne z 64-bitowych plików binarnych, przekierowując wywołania rejestru i niektóre wywołania systemu plików. Podsystem WOW64 izoluje pliki binarne, aby zapobiec przypadkowemu uzyskiwaniu dostępu do danych z 64-bitowego pliku binarnego przez 32-bitowy plik binarny. Na przykład 32-bitowy plik binarny, który uruchamia plik .dll z folderu %systemroot%\System32, może przypadkowo spróbować uzyskać dostęp do 64-bitowego pliku .dll, który nie jest zgodny z 32-bitowym plikiem binarnym. Aby temu zapobiec, podsystem WOW64 przekierowuje dostęp z folderu %systemroot%\System32 do folderu %systemroot%\SysWOW64. To przekierowanie zapobiega błędom zgodności, ponieważ wymaga, aby plik .dll został specjalnie zaprojektowany do pracy z programami 32-bitowymi.

Aby uzyskać więcej informacji na temat przekierowania systemu plików i rejestru, zobacz temat "Uruchamianie aplikacji 32-bitowych" w sekcji 64-bitowej wersji systemu Windows w dokumentacji zestawu Microsoft Platform SDK. Aby wyświetlić ten dokument, odwiedź następującą witrynę internetową firmy Microsoft: Uruchamianie aplikacji 32-bitowych
Podsystem WOW64 przekierowuje 32-bitowe wywołania binarne bez konieczności wprowadzania zmian w 32-bitowych plikach binarnych. Jednak podczas wykonywania pewnych zadań może zostać wyświetlony dowód tego przekierowania. Na przykład, jeśli wpiszesz skrypt wiersza poleceń w 64-bitowym wierszu poleceń, wiersz poleceń może nie mieć dostępu do 32-bitowych programów w folderze Program Files. Podsystem WOW64 przekierowuje i instaluje programy 32-bitowe w folderze Program Files (x86). Aby uzyskać dostęp do poprawnego folderu, należy zmienić skrypt wiersza poleceń. Alternatywnie należy wpisać skrypt wiersza polecenia w 32-bitowym wierszu poleceń. 32-bitowy wiersz poleceń automatycznie przekierowuje wywołania systemu plików do poprawnego katalogu 32-bitowego.

Aby uruchomić 32-bitowy wiersz poleceń, wykonaj następujące kroki:

  • Kliknij przycisk Start, kliknij polecenie Uruchom, wpisz polecenie %windir%\SysWoW64\cmd.exe, a następnie kliknij przycisk OK.

Sprawdzanie wersji

Niektóre programy 32-bitowe sprawdzają informacje o wersji systemu operacyjnego. Wiele 32-bitowych programów, które wykonują to sprawdzenie, nie rozpoznaje wersji systemu Windows opartych na architekturze x64 jako kompatybilnych systemów operacyjnych. Jeśli do tego dojdzie, program 32-bitowy wygeneruje błąd sprawdzania wersji, a następnie zamknie się. W takim przypadku skontaktuj się z producentem 32-bitowego programu, aby uzyskać aktualizację kompatybilną z wersjami systemu Windows opartymi na architekturze x64.

Microsoft .NET Framework

Program skompilowany za pomocą programu Microsoft .NET Framework będzie uruchamiany jako program 32-bitowy w podsystemie WOW64, jeśli spełnione są następujące warunki:

  • Program ma bit ILONLY ustawiony w informacjach nagłówka.
  • Program został skompilowany za pomocą programu Microsoft .NET Framework 1.1. Jeśli program nie ma bitu ILONLY ustawionego w informacjach nagłówka lub program został skompilowany za pomocą programu Microsoft .NET Framework wersji 2.0, program będzie uruchamiany jako natywny program 64-bitowy.

OpenGL

Wersje systemu Windows oparte na architetkturze x64 nie zawierają sterownika grafiki OpenGL. Skontaktuj się z producentem urządzenia w celu uzyskania sterownika kompatybilnego z wersjami systemu Windows opartymi na architekturze x64.

Uruchom konsolę Microsoft Management Console (MMC)

Wersje systemu Windows oparte na architekturze x64 używają 64-bitowej wersji programu Microsoft Management Console (MMC) do uruchamiania różnych przystawek. Jednak czasami mogą wymagać 32-bitowej wersji programu MMC do uruchamiania przystawek w podsystemie WOW64. Aby uzyskać więcej informacji na temat zachowania programu MMC w systemie Windows opartym na architekturze x64, zobacz temat " (Uruchamianie 32-bitowych i 64-bitowych przystawek w 64-bitowym systemie Windows) w sekcji Korzystanie z programu MMC 2.0 w dokumentacji zestawu Microsoft Platform SDK. Aby wyświetlić ten dokument, odwiedź następującą witrynę internetową firmy Microsoft: Uruchamianie 32-bitowych i 64-bitowych przystawek w 64-bitowym systemie Windows

Zagadnienia dotyczące architektury x64

Wersje systemu Windows oparte na architekturze x64 obsługują instrukcje 32-bitowe i instrukcje 64-bitowe. Podsystem WOW64 może uruchamiać programy 32-bitowe w natywnym trybie 64-bitowym, przełączając tryb natywny procesora. Oddzielne warstwy sprzętu lub oprogramowania nie są wymagane. Podczas uruchamiania 32-bitowego programu w wersjach systemu Windows opartych na architekturze x64 może nie wystąpić spadek wydajności.

Aby uzyskać więcej informacji na temat wydajności procesora opartego na architekturze x64, skontaktuj się z producentem procesora lub odwiedź stronę internetową producenta. Informacje i rozwiązanie zawarte w tym dokumencie reprezentują bieżący firmy Microsoft Corporation w tych kwestiach na dzień publikacji. To rozwiązanie jest dostępne za pośrednictwem firmy Microsoft lub dostawcy innej firmy. Firma Microsoft nie zaleca konkretnie żadnego innego dostawcy ani rozwiązania innej firmy, które może opisywać ten artykuł. Mogą istnieć również inni dostawcy lub rozwiązania innych firm, których ten artykuł nie opisuje. Ponieważ firma Microsoft musi reagować na zmieniające się warunki rynkowe, te informacje nie powinny być interpretowane jako zobowiązanie firmy Microsoft. Firma Microsoft nie może zagwarantować ani potwierdzić dokładności jakichkolwiek informacji ani jakiegokolwiek rozwiązania, które jest prezentowane przez firmę Microsoft lub jakiegokolwiek wymienionego dostawcę zewnętrznego.

Firma Microsoft nie udziela żadnych gwarancji i wyklucza wszystkie oświadczenia, gwarancje i warunki, zarówno te wyrażone bezpośrednio, dorozumiane, jak i ustawowe. Obejmują one między innymi oświadczenia, gwarancje lub rękojmi tytułu, nie naruszenia własności intelektualnych, zadowalającego warunku, wartości handlowej i przydatności do określonego celu, w odniesieniu do wszelkich usług, rozwiązań, produktów lub innych materiałów lub informacji. W żadnym wypadku firma Microsoft nie ponosi odpowiedzialności za jakiekolwiek rozwiązania innych firm wymienionych w tym artykule.

Informacje

Aby uzyskać więcej informacji na temat procesora AMD64, odwiedź następującą witrynę internetową firmy Advanced Micro Devices: Witryna internetowa firmy AMD
Firma Microsoft udostępnia informacje dotyczące sposobów kontaktowania się z innymi firmami, aby ułatwić uzyskanie niezbędnej pomocy technicznej. Informacje te mogą zostać zmienione bez powiadomienia. Firma Microsoft nie gwarantuje dokładności informacji dotyczących innych firm.

Aby uzyskać więcej informacji na temat tworzenia programów dla wersji systemu Windows Server 2003 i Windows XP opartych na architekturze Itanium, odwiedź następującą witrynę internetową firmy Microsoft: Wprowadzenie do tworzenia aplikacji dla 64-bitowej wersji systemu Windows opartej na architekturze Itanium

Produkty innych firm omówione w tym artykule są wytwarzane przez producentów niezależnych od firmy Microsoft. Firma Microsoft nie daje żadnych gwarancji, dorozumianych ani żadnego innego rodzaju, dotyczących wydajności lub niezawodności tych produktów.