Wat is het OCX-bestandsformaat?
.ocx-bestanden zijn gekoppeld aan de ActiveX-besturingsmodule voor het Microsoft Windows-besturingssysteem. Het formaat ontstond in 1994 als OLE Custom Controls en werd in 1996 omgedoopt tot ActiveX Controls. Structureel is een .ocx-bestand een gecompileerd Windows PE-binair bestand - in feite een .dll die begint met de MZ magic header en COM-besturingsinterfaces blootstelt, inclusief de verplichte DllRegisterServer export.
ActiveX is een softwareframework voor het beheren van componenten die worden gebruikt door applicaties die zijn ontwikkeld in programmeertalen zoals:
- Visual Basic,
- C++,
- Delphi,
- PowerBuilder.
Besturingselementen die in .ocx-bestanden zijn opgeslagen, maken een snelle en efficiënte gegevensuitwisseling mogelijk tussen verschillende applicaties die op Windows draaien. Ze vergemakkelijken de informatieoverdracht tussen elementen en maken snelle applicatieontwikkeling mogelijk. Elk besturingselement wordt in het Windows-register geregistreerd door regsvr32 bestand.ocx uit te voeren; om de registratie ongedaan te maken, gebruikt u regsvr32 /u bestand.ocx. Besturingselementen kunnen ook worden gebruikt om componenten in verschillende omgevingen uit te voeren - bijvoorbeeld als in-page webbrowser-applets - hoewel dit gebruik nu als verouderd wordt beschouwd sinds de ActiveX-ondersteuning in Microsoft Edge is komen te vervallen en met Internet Explorer in 2022-2023 is beëindigd. Een ingebedde .tlb type-bibliotheek in de .rsrc-sectie beschrijft de interfaces van het besturingselement voor host-tools.
Het wordt geadviseerd om ActiveX uit te schakelen vanwege de bekende beveiligingsrisico's waaraan het het systeem blootstelt. Het uitschakelen van ActiveX voorkomt dat .ocx-bestanden worden geladen door browsers of legacy host-applicaties. Voor nieuwe Windows-ontwikkeling hebben WinForms- en WPF-besturingselementen het ActiveX-model effectief vervangen.
Beveiliging & veiligheid
RISICO: HIGHEen OCX is uitvoerbare code die zichzelf diep in Windows registreert (COM/CLSID), dus voorzichtigheid is geboden. Risico's: kwaadaardige of getrojaniseerde ActiveX-besturingselementen kunnen draaien met de rechten van de host-app, en ActiveX was historisch gezien een belangrijke vector voor browser-drive-by's in Internet Explorer (nu beëindigd). „OCX download” sites zijn een klassiek kanaal voor malware/PUP en leveren meestal een besturingselement met de verkeerde versie dat de app toch niet zal repareren. Regels: herstel fouten met ontbrekende OCX'en door het programma dat de eigenaar is van het besturingselement opnieuw te installeren, niet door de OCX van een site van derden te downloaden; als u een bekend Microsoft-besturingselement moet verkrijgen (bijv. MSCOMCTL.OCX), haal dit dan uit het officiële Microsoft-pakket; controleer de digitale handtekening van een onbekende OCX (Eigenschappen > Digitale handtekeningen) en scan deze op VirusTotal voordat u deze registreert. Registreer nooit OCX-bestanden die u niet vertrouwt.
Formaatdetails
in een notendopProgramma's die OCX-bestanden openen
Technische details
diepe specificaties| Bestandsstructuur | PE (Portable Executable) binair bestand - dezelfde container als een .dll; DOS-stub + MZ-header, PE/COFF-headers, sectietabel, code/data-secties en een .rsrc-bronnensectie |
| Magic bytes | 0x4D 0x5A („MZ”) op offset 0; PE-handtekening 0x50 0x45 0x00 0x00 op de offset opgeslagen in het DOS e_lfanew-veld (0x3C) |
| PE-variant | PE32 (x86/32-bits) of PE32+ (AMD64/x64); DLL-kenmerkvlag (0x2000) ingesteld in het veld COFF Characteristics |
| Vereiste exports | DllRegisterServer, DllUnregisterServer, DllGetClassObject, DllCanUnloadNow - verplicht voor een zelfregistrerende COM-server |
| Registratiemechanisme | regsvr32 bestand.ocx schrijft CLSID, ProgID en type-bibliotheek-GUID's onder HKCR\CLSID\{...} in het Windows-register; regsvr32 /u verwijdert deze |
| COM-interfaces (UI-besturing) | Moet IUnknown implementeren; in-process UI-besturingselementen stellen bovendien IOleObject, IOleControl, IOleInPlaceObject en IDispatch bloot voor scripting en VBA-automatisering |
| Ingebedde type-bibliotheek | Een gecompileerde .tlb type-bibliotheekbron is doorgaans ingebed in de .rsrc PE-sectie, die de interfaces van het besturingselement beschrijft voor IDE's en VBA-hosts |
| Byte-volgorde | Little-endian (Intel/x86 native) |
| Codering | Binair (gecompileerde native code - niet geïnterpreteerd of op tekst gebaseerd) |
| Typische bestandsgrootte | 20 KB - 10 MB, afhankelijk van het aantal besturingselementen en ingebedde UI-bronnen |
| Authenticode-ondersteuning | Optionele Authenticode digitale handtekening voor verificatie van de uitgever; PE-header CheckSum-veld biedt een basisintegriteitscontrole |
| MIME-type | application/octet-stream (er is geen specifiek MIME-type voor .ocx geregistreerd) |
| Host-afhankelijkheid | Kan niet zelfstandig draaien; moet worden geïnstantieerd door een COM-bewuste host: VB6 IDE, MFC/ATL-applicatie, Office VBA-gebruikersformulier of legacy Internet Explorer |
| Beveiligingsstatus | Beschouwd als hoog risico (willekeurige uitvoering van native code in hostproces); verwijderd in Microsoft Edge; beëindigd met Internet Explorer in 2022-2023 |
| Voorganger-formaat | Verving 16-bits .vbx (Visual Basic Extension) besturingselementen geïntroduceerd met Visual Basic 1.0 in 1991 |
| Platformondersteuning | Alleen Windows (Win32 / Win64); geen native ondersteuning op macOS of Linux |
| Uitgebracht | 1994 (OLE Custom Controls / OCX); rebranded ActiveX Controls in 1996 |
| Laatste versie | N/A (tied to the COM/ActiveX model; effectively frozen, legacy on modern Windows) |
| Specificatie | learn.microsoft.com |
OCX conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over OCX-bestanden.