Hrvatska akademska i istraživačka mreža
  NASLOVNICA MAPA WEBA TRAŽILICA KONTAKTI CARNET WEB
Hrvatska akademska i istraživačka mreža
 
menu 4
Sigurnost
menu 4
Distribucija
menu 4
Pomoć
menu 4
Dokumenti
menu 4
menu 4

 

 

8-07-04 14:11
[MS Windows] DLL raj, iliti zaštićeni DLL-ovi i regsvr32.exe

piše BORIS TROJAN

U vremenima prije OS-a 2000, još od prvih verzija Windowsa, operativni sistem i aplikacije ovise o DLL-ovima, kratkim komadima koda koji obavljaju neke standardne, uobičajene funkcije potrebne kako aplikacijama tako i sistemu. Zajedničko im je ime OLE kontrole (object linking and embedding controls) - dynamic-link library (DLL) i ActiveX Controls (OCX).

 

DLL-ovi mogu biti vezani uz određenu aplikaciju ili mogu biti 'sistemski'; potonje dijele i aplikacije i OS. Prije Windowsa 2000 DLL-ovi su stvarali probleme jer su često mijenjali funkcionalnost i ponašanje kroz Microsoftove izmjene OS-a, a mijenjali su ih i programeri kroz proces razvoja aplikacije.

 

Microsoft je izmjene stvarao kroz patcheve i hotfixeve, a developeri su onda kao odgovor stvarali vlastite DLL-ove. Nevolje su se događale kad bi instalirane aplikacije zahtjevale različite verzije DLL-a: ili verzija nije bila dostupna u sistemu, ili je sistemska verzija bila zamijenjena pa je patio OS...

 

DLL-ovi su danas zaštićeni digitalnim potpisom koji nose unutar samih sebe, odnosno Windows File Protection sistemom. Originalne verzije smještene su u

 

%systemroot%\system32\dllcache

 

ili se nalaze na instalacijskom cd-u. Izmjene u DLL-u sada su dopuštene samo aplikacijama s odgovarajućim potpisom (service pack ili hotfix). Ako neautorizirana aplikacija pokuša izmijeniti neki DLL, takav se događaj otkriva preko potpisa i originalna verzija se automatski iz cachea vraća u prvobitno stanje. Na taj način developeri ne mogu u sistem ubaciti DLL koji bi eventualno stvorio probleme. Prinuđeni su ili ne koristiti sistemski DLL u svom kodu, ili kod moraju prilagoditi

radu sistemskog DLL-a. Prilikom prilagođavanja datoteke, Windows 2000 im omogućava korištenje "privatne" verzije DLL-a isključivo za potrebe aplikacije i tada se on može razlikovati od originala koje koristi OS. Tako se OS izolira od aplikacije i postiže bolju stabilnost od starijih verzija.

 

No, ova teorija i propušta. Na probleme sa DLL-ovima nailazimo i danas, iako mnogo rjeđe.

U situaciji kad neka aplikacija ili klijent pokazuju poruku o grešci u nekom modulu prilikom instalacije ili podizanja, možemo pokušati odregistrirati modul i pokrenuti aplikaciju opet,

 

regsvr32 /u imemodula.dll

 

ili naknadno pokušati u sistem uvesti originalnu verziju iz \dllcache direktorija ili pomoću naredbe sfc.exe

 

ili,

 

može se dogoditi da je DLL koji je potreban za rad aplikacije u nekom momentu instalacije deaktiviran, te ga je potrebno samo registrirati

 

regsvr32 imemodula.dll ili regsvr32 "path:\imemodula.dll"

 

u ovom slučaju DLL datoteka se može nalaziti i na drugom mjestu izvan %systemroot%-a.

Dobra je ideja provjeriti, preko komandno-linijskog alata depends (Dependency Walker), ovisnost ekzgekutabilne datoteke naše problematične aplikacije o sistemskim ili aplikacijskim DLL datotekama, te ih onda eventualno registrirati. Depends.exe će nas obavijestiti o datotekama koje nedostaju ili su oštećene.

Regsvr32.exe učitava datoteku koju želite registrirati ili deregistrirati zajedno sa svim njenim ovisnostima.

Greške prilikom korištenja regsvr32.exe su također moguće.

 

Evo jednog primjera iz Microsoft Knowledge Basea u kojemu se zahtijeva deregistracija oštećenog modula wuv3is.dll prije nego reinstaliramo originalnu verziju:

 

http://support.microsoft.com/default.aspx?kbid=241122

241122 WINUP- Invalid Page Fault in 'wuv3is.dll'

 

a opis korištenja i poruke greške mogu se vidjeti na:

 

Explanation of Regsvr32 Usage and Error Messages

http://support.microsoft.com/?kbid=249873

 

Ovdje bih želio naglasiti kako je dobro imati na umu da OLE objekti mogu biti uzrokom neposluha OS-a i aplikacija, te da pomoću ova dva alata možemo normalizirati rad problematične aplikacije, a rješenje tih problema može se izvesti brzo i efikasno.





[Lista]
Ovu uslugu CARNeta realizira Sveučilišni računski centar Sveučilišta u Zagrebu
  Copyright ©2005. CARNet. Sva prava zadržana. Impressum.
Mail to
sys-portal@CARNet.hr