ActiveX – määritelmä, käyttö Windowsin DLL-kirjastoissa

ActiveX on Microsoftin komponenttitekniikka, joka perustuu COM (Component Object Model) -arkkitehtuuriin. ActiveX-komponentit toteutetaan tyypillisesti in-process -palveluina eli DLL- tai OCX-tiedostoina, ja niitä käytetään uudelleenkäytettävien ohjelmistokomponenttien tarjoamiseen eri sovelluksissa — esimerkiksi käyttöliittymäohjaimina, datan käsittelykomponenteina tai selaimen laajennuksina.

Miten ActiveX toimii ja missä se sijaitsee

ActiveX-komponentti on binäärinen COM-objekti, joka voi olla:

  • DLL (Dynamic-link library) – tavallisin muoto in-process-komponenteille;
  • OCX – käytännössä DLL-tiedosto, jota käytetään erityisesti OLE/ActiveX-ohjaimissa;
  • EXE – out-of-process -palvelin, erillinen prosessi COM-objektin tarjoamiseen.

Komponentin tunnistaa yleensä siitä, että se rekisteröidään järjestelmään (rekisteriin tallennetaan CLSID, ProgID, polut ja mahdolliset tyyppikirjastot). In-process-komponentit vievät sovelluksen omaan prosessiin ja tarjoavat suoremman suoritustien kuin out-of-process-palvelimet.

Rekisteröinti ja tunnistaminen

  • ActiveX/DLL/OCX rekisteröidään usein Komentoriviltä komennolla regsvr32, joka kutsuu DLL:n vientiä DllRegisterServer.
  • Rekisteristä (HKCR/HKLM) löytyy CLSID-ja ProgID-merkinnät, joiden avulla COM-asiakas voi luoda objektin esimerkiksi API-kutsulla CoCreateInstance.
  • OCX-tiedostot näkyvät joskus tiedostopäätteellä .ocx, mutta ActiveX-komponentti voi olla myös .dll.

Käyttö Windowsin sovelluksissa ja selaimissa

ActiveX-komponentteja on käytetty laajasti Windows-sovelluksissa ja Internet Explorerissa. Selaimessa ActiveX-ohjaimia voitiin upottaa HTML-sivuille tagilla <object> tai <embed>, mikä antoi verkkosivuille suoran pääsyn paikallisiin resursseihin ja laitteisiin — tästä seurasi merkittäviä turvallisuusriskejä.

Sovelluksissa ActiveX-komponentti voidaan kutsua suoraan COM-rajapintojen kautta tai käyttää COM-muunnoksia eri ohjelmointikielissä (esim. C++, VB6, C# COM Interop).

Turvallisuus ja nykytila

  • ActiveX:llä on ollut paljon turvallisuusongelmia, koska aktiivinen koodi suoritetaan usein käyttäjän koneella laajoilla oikeuksilla. Monet haittaohjelmat ovat hyödyntäneet haavoittuvia ActiveX-komponentteja.
  • Nykyselaimet eivät enää tue ActiveX:ää (Internet Explorerin käyttö on vähentynyt ja uudempia selaimia ei tämän teknologian kanssa yleensä käytetä). Microsoft on siirtynyt kohti moderneja, turvallisempia ratkaisuja kuten web-standardit (HTML5, JavaScript), WebAssembly ja pilvipohjaiset palvelut.
  • Jos ActiveX-komponentteja käytetään edelleen, on kiinnitettävä huomiota allekirjoituksiin, päivittämiseen, käytön rajoittamiseen ja siihen, että komponentit on merkitty turvallisiksi skriptausta varten (SAFE FOR SCRIPING/INITIALIZATION) vain kun se on varmistettu.

Resurssi-DLL:t ja ero ActiveX:iin

Mitä tahansa Microsoft Windowsin datatiedostoa, jolla on sama tiedostomuoto kuin Dynamic-link -kirjastolla, voidaan kutsua resurssi-DLL:ksi. Resurssi-DLL:t sisältävät usein kuvakkeita (ICL), fontteja (FON, FOT), käännöstietoja tai muita staattisia resursseja eivätkä ne välttämättä tarjoa COM-rajapintoja tai suoritettavaa koodia kuten ActiveX-komponentit. Toisin sanoen:

  • Resurssi-DLL = sisältää resursseja (ikoneita, kielitiedostoja, fontteja).
  • ActiveX/DLL/OCX = tarjoaa ohjelmallisen COM-rajapinnan ja voi sisältää suoritettavaa koodia, joka toteuttaa metodeja ja tapahtumia.

Käytännön huomioita kehittäjälle ja ylläpitäjälle

  • Varmista, että ActiveX-komponentit on rekisteröity oikein ja että niiden riippuvuudet (riippuvat DLL:t) löytyvät samasta bit-arkkitehtuurista (32/64-bit – 32-bitin komponentti ei toimi 64-bittisessä prosessissa).
  • Testaa turvallisuusasetukset ja varmista komponenttien allekirjoitukset ennen julkaisua.
  • Harkitse moderneja vaihtoehtoja (COM Interop .NET:ssä, WCF/REST-palvelut, Web-technologiat) kun suunnittelet uutta kehitystä tai korvaat vanhoja ActiveX-ratkaisuja.

Yhteenvetona: ActiveX on käyttötarkoitukseltaan voimakas, mutta vanhentuva Microsoftin komponenttiteknologia: se mahdollistaa uudelleenkäytettävät COM-komponentit (usein DLL/OCX-muodossa), mutta vaatii huolellista hallintaa ja turvallisuustoimia nykyaikaisessa ympäristössä.


AlegsaOnline.com - 2020 / 2025 - License CC3