REGISTRAZIONE
DI UNA LIBRERIA
Si diceva che ogni
installazione aggiunge Librerie al S.O. ed il kit di installazione
effettua delle modifiche al Registry per ogni nuovo componente.
Nel caso in cui ci sia la necessità di registrare manualmente
un libreria usare l'utilità REGSVR32.EXE.
Il programma è contenuto in C:\WINDOWS\SYSTEM e può essere
eseguito da DOS o da Esegui di Windows
Per registrare
un componente Regsvr32.exe c:\prova\nomefle.dll
Per deregistrarlo Regsvr32.exe c:\prova\nomefle.dll /u
I componenti EXE
si registrano automaticamente alla loro prima esecuzione.
Se è necessario che la libreria si registri e si chiuda
automaticamente allora è necessario aggiungere /regserver
(/unregserver lo deregistra).
MODIFICHE
NEL REGISTRY DEGLI OGGETTI OLE
La tecnologia OLE
permette di incapsulare Oggetti creati da un'applicazione
all'interno di documenti prodotti da un'altra (ad esempio
avere un foglio di Excel [che fa da control] in
un documento di Word [che fa da container]).
Per capire quali modifiche apporta al registry l'installazione
di un oggetto Ole è importante vedere in che modo vengono
utilizzate.
Il container
cerca nel Registro sotto HKCR la classe che deve
utilizzare.
Esempio: MSGraph.Chart
questa chiave ha 2 sottochiavi CURVER e
CLSID.
La prima contiene un valore di testo che mostra
la Versione.
La seconda mostra un valore esadecimale 8+4+4+12 (es.
{932000EE-8140-11D2-0080C8FF2183}).
Tramite questo
codice vengono trovati sotto HKCR\CLSID le informazioni
necessarie all'utilizzo (alcuni EXE hanno il CLSID
dei server che utilizzano, soprattutto se installati
con loro, già memorizzati e quindi evitano la prima fase).
Le informazioni sono:
LocalServer32 (nel Valore (predefinito)): rappresenta
il percorso del file EXE che fornisce il componente
(se è un EXE).
InProcServer32 (nel Valore (predefinito)): rappresenta
il percorso del file .DLL che fornisce il componente
(se è una DLL).
Nel caso delle DLL c'è anche un Valore Threading
Model che può avere a sua volta 2 valori principali: Apartment
e Free.
Multithreading: è la capacità di eseguire differenti parti di codice
di un'applicazione
(esempio di Word che durante la digitazione un thread
si occupa dell'impaginazione ed un altro thread della
correzione).
Il multithreading viene sfruttato a fondo in
sistemi con più processori ma nel caso di una singola
CPU non rappresenta sempre un vantaggio. Il Valore Free indica che
ciascun thread può accedere all'intera area
dati del processo. Nel caso del Valore Apartment ogni thread viene
incapsulato in un "appartamento" a se stante senza poter accedere all'area dati
degli altri thread.
COME
TROVA WINDOWS UNA DLL?
All'avvio di ogni
programma vengono caricate tutte le librerie (DLL, EXE,
OCX, ecc.) di cui il software ha bisogno. Il processo
di ricerca e caricamento di una DLL in Win 9X utilizza
un preciso ordine di ricerca:
1. Directory
da cui è stata caricata l'applicazione.
2. Directory corrente.
3. Directory di sistema di windows (Windows\System).
Usa la funzione GetSystemDirectory (contenuta in Kernel32.dll)
per localizzare la cartella.
[nel caso di windows Nt/2000 il punto 3 viene modificato:
3a. Directory di sistema 32-bit (Windows\System32)
3b. Directory di sistema 16-bit (Windows\System)]
4. Directory
di Windows (Windows).
Usa la funzione GetWindowsDirectory (kernel32.dll)
5. Nelle directory del PATH.
PATH E' quello impostato nella cartella
Hkey_Local_Machine\SOFTWARE\Microsoft
\Windows\CurrentVersion\AppPath.
Questa chiave ha una serie di sottocartelle che rappresentano
le varie applicazioni installate.
All'interno della cartella c'è una chiave PATH che sta
ad indicare il Path specifico dell'applicazione.

L'ordine
viene modificato se:
1. il nome della DLL è passato a Load Library specificando
la posizione (path).
(Ad esempio i Riferimenti di Office)
2. la DLL a 32 bit ha una stringa di valore col suo nome
(esclusa l'estensione) in KnowDlls.
(HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\
SESSIONMANAGER\KNOWDDLS)
[Nel caso in cui il file venga segnalato da KnowDlls la sua
ricerca parte immediatamente dalla cartella di sistema
Windows\System. Se non viene trovato in quella posizione
il sistema restituisce immediatamente un errore "THE SYSTEM
CANNOT FIND THE FILE SPECIFIED" senza proseguire la ricerca
in altre cartelle].
|