Co to jest format pliku OCX?
Pliki .ocx są powiązane z modułem kontrolki ActiveX dla systemu operacyjnego Microsoft Windows. Format ten powstał w 1994 roku jako OLE Custom Controls i został przemianowany na ActiveX Controls w 1996 roku. Strukturalnie plik .ocx jest skompilowanym plikiem binarnym Windows PE - w rzeczywistości jest to plik .dll, który zaczyna się od nagłówka magicznego MZ i udostępnia interfejsy sterowania COM, w tym obowiązkowy eksport DllRegisterServer.
ActiveX to platforma programistyczna do zarządzania komponentami używanymi przez aplikacje opracowane w językach programowania takich jak:
- Visual Basic,
- C++,
- Delphi,
- PowerBuilder.
Kontrolki przechowywane w plikach .ocx pozwalają na szybką i wydajną wymianę danych między różnymi aplikacjami działającymi w systemie Windows. Ułatwiają one przesyłanie informacji między elementami i pozwalają na szybkie tworzenie aplikacji. Każda kontrolka jest rejestrowana w rejestrze systemu Windows poprzez uruchomienie regsvr32 plik.ocx; aby ją wyrejestrować, należy użyć regsvr32 /u plik.ocx. Kontrolki mogą być również używane do uruchamiania komponentów w różnych środowiskach - na przykład jako aplety w przeglądarce internetowej - choć to zastosowanie jest obecnie uważane za przestarzałe, odkąd wsparcie dla ActiveX zostało usunięte z Microsoft Edge i wycofane wraz z Internet Explorer w latach 2022-2023. Osadzona biblioteka typów .tlb w sekcji .rsrc opisuje interfejsy kontrolki dla narzędzi hostujących.
Zaleca się wyłączenie ActiveX ze względu na znane zagrożenia bezpieczeństwa, na jakie naraża system. Wyłączenie ActiveX zapobiega ładowaniu plików .ocx przez przeglądarki lub starsze aplikacje hostujące. W przypadku nowych projektów w systemie Windows kontrolki WinForms i WPF skutecznie zastąpiły model ActiveX.
Bezpieczeństwo
RYZYKO: HIGHPlik OCX to kod wykonywalny, który rejestruje się głęboko w systemie Windows (COM/CLSID), dlatego wymaga zachowania ostrożności. Ryzyko: złośliwe lub zainfekowane trojanami kontrolki ActiveX mogą działać z uprawnieniami aplikacji hostującej, a ActiveX historycznie był głównym wektorem ataków typu drive-by w Internet Explorer (obecnie wycofanym). Strony oferujące „pobieranie OCX” to klasyczny kanał dystrybucji malware/PUP i zazwyczaj dostarczają kontrolkę w złej wersji, która i tak nie naprawi aplikacji. Zasady: naprawiaj błędy brakujących plików OCX poprzez ponowną instalację programu będącego właścicielem kontrolki, a nie przez pobieranie pliku z witryn trzecich; jeśli musisz pozyskać znaną kontrolkę Microsoft (np. MSCOMCTL.OCX), pobierz ją z oficjalnego pakietu Microsoft; sprawdź podpis cyfrowy nieznanego pliku OCX (Właściwości > Podpisy cyfrowe) i przeskanuj go w serwisie VirusTotal przed rejestracją. Nigdy nie rejestruj plików OCX, którym nie ufasz.
Szczegóły formatu
w pigułceProgramy otwierające pliki OCX
Szczegóły techniczne
specyfikacja| Struktura pliku | Plik binarny PE (Portable Executable) - ten sam kontener co .dll; stub DOS + nagłówek MZ, nagłówki PE/COFF, tablica sekcji, sekcje kodu/danych oraz sekcja zasobów .rsrc |
| Magiczne bajty | 0x4D 0x5A („MZ”) na offsetcie 0; sygnatura PE 0x50 0x45 0x00 0x00 na offsetcie zapisanym w polu DOS e_lfanew (0x3C) |
| Wariant PE | PE32 (x86/32-bit) lub PE32+ (AMD64/x64); ustawiona flaga charakterystyki DLL (0x2000) w polu COFF Characteristics |
| Wymagane eksporty | DllRegisterServer, DllUnregisterServer, DllGetClassObject, DllCanUnloadNow - obowiązkowe dla samorejestrującego się serwera COM |
| Mechanizm rejestracji | regsvr32 plik.ocx zapisuje identyfikatory CLSID, ProgID oraz GUID bibliotek typów w kluczu HKCR\CLSID\{...} w rejestrze Windows; regsvr32 /u usuwa je |
| Interfejsy COM (kontrolka UI) | Musi implementować IUnknown; kontrolki UI działające w procesie dodatkowo udostępniają IOleObject, IOleControl, IOleInPlaceObject oraz IDispatch dla skryptowania i automatyzacji VBA |
| Osadzona biblioteka typów | Skompilowany zasób biblioteki typów .tlb jest zazwyczaj osadzony w sekcji PE .rsrc, opisując interfejsy kontrolki dla środowisk IDE i hostów VBA |
| Kolejność bajtów | Little-endian (natywna dla Intel/x86) |
| Kodowanie | Binarne (skompilowany kod natywny - nieinterpretowany, nietekstowy) |
| Typowy rozmiar pliku | 20 KB - 10 MB w zależności od liczby kontrolek i osadzonych zasobów interfejsu użytkownika |
| Wsparcie Authenticode | Opcjonalny podpis cyfrowy Authenticode do weryfikacji wydawcy; pole CheckSum w nagłówku PE zapewnia podstawową kontrolę integralności |
| Typ MIME | application/octet-stream (brak zarejestrowanego specyficznego typu MIME dla .ocx) |
| Zależność od hosta | Nie może działać samodzielnie; musi zostać zainicjowany przez hosta obsługującego COM: IDE VB6, aplikację MFC/ATL, formularz użytkownika Office VBA lub starszą wersję Internet Explorer |
| Status bezpieczeństwa | Uważany za format wysokiego ryzyka (wykonywanie dowolnego kodu natywnego w procesie hosta); usunięty z Microsoft Edge; wycofany wraz z Internet Explorer w latach 2022-2023 |
| Poprzednik formatu | Zastąpił 16-bitowe kontrolki .vbx (Visual Basic Extension) wprowadzone wraz z Visual Basic 1.0 w 1991 roku |
| Obsługa platform | Tylko Windows (Win32 / Win64); brak natywnego wsparcia w systemach macOS lub Linux |
| Wydano | 1994 (OLE Custom Controls / OCX); rebranded ActiveX Controls in 1996 |
| Najnowsza wersja | N/A (tied to the COM/ActiveX model; effectively frozen, legacy on modern Windows) |
| Specyfikacja | learn.microsoft.com |
Konwersje OCX
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki OCX.