Tabella SelfReg
La tabella SelfReg contiene informazioni sui moduli che devono essere autoregistrato. Il programma di installazione chiama la funzione DllRegisterServer durante l'installazione del modulo; chiama DllUnregisterServer durante la disinstallazione del modulo. Il programma di installazione non registra automaticamente i file EXE.
La tabella SelfReg include le colonne seguenti.
Colonna | Tipo | Chiave | Nullable |
---|---|---|---|
File_ | Identificatore | S | N |
Costi | Integer | N | S |
-
File_
-
Chiave esterna nella prima colonna della tabella File che indica il modulo che deve essere registrato.
-
Costo
-
Costo della registrazione del modulo in byte. Deve essere un numero non negativo.
Gli autori dei pacchetti di installazione sono fortemente sconsigliati di usare la registrazione automatica. Devono invece registrare i moduli creando una o più tabelle fornite dal programma di installazione per questo scopo. Per altre informazioni, vedere Gruppo tabelle del Registro di sistema. Molti dei vantaggi di avere un servizio di installazione centrale vengono persi con la registrazione automatica perché le routine di registrazione automatica tendono a nascondere le informazioni di configurazione critiche. I motivi per evitare la registrazione automatica includono:
- Il rollback di un'installazione con moduli autoregistrati non può essere eseguito in modo sicuro usando DllUnregisterServer perché non è possibile indicare se le chiavi autoregistrati vengono usate da un'altra funzionalità o applicazione.
- La possibilità di usare l'annuncio è ridotta se la registrazione del server di classi o estensioni viene eseguita all'interno di routine di registrazione automatica.
- Il programma di installazione gestisce automaticamente le chiavi HKCR nelle tabelle del Registro di sistema per le installazioni per utente o per computer. Le routine DllRegisterServer attualmente non supportano la nozione di chiave HKCR per utente.
- Se più utenti usano un'applicazione autoregistrato nello stesso computer, ogni utente deve installare l'applicazione la prima volta che viene eseguita. In caso contrario, il programma di installazione non può determinare facilmente che esistano le chiavi del Registro di sistema HKCU appropriate.
- L'accesso a DllRegisterServer può essere negato alle risorse di rete, ad esempio le librerie dei tipi, se un componente è specificato sia come run-from-source che viene elencato nella tabella SelfReg. Ciò può causare l'esito negativo dell'installazione del componente durante un'installazione amministrativa.
- Le DLL con registrazione automatica sono più vulnerabili agli errori di codifica perché il nuovo codice necessario per DllRegisterServer è comunemente diverso per ogni DLL. Usare invece le tabelle del Registro di sistema nel database per sfruttare il codice esistente fornito dal programma di installazione.
- Le DLL con registrazione automatica possono talvolta collegarsi a DLL ausiliarie non presenti o che sono la versione errata. Al contrario, il programma di installazione può registrare le DLL usando le tabelle del Registro di sistema senza alcuna dipendenza dallo stato corrente del sistema.
Nota
Non è possibile specificare l'ordine in cui il programma di installazione registra o annulla la registrazione automatica delle DLL usando le azioni SelfRegModules e SelfUnRegModules . Vedere Specifica dell'ordine di registrazione automatica.