Domanda

Supponendo che l'auto-registrazione venga utilizzata per installare componenti come parte di un programma di installazione più grande, perché l'auto-registrazione è sbagliata? Per esempio. controlli personalizzati vb autoregistranti o capicom o altro. Riconosco che l'autoregistrazione probabilmente non è così sicura nel caso di una dll che hai scritto tu stesso, ma non sto discutendo di quelli.

MSDN elenca diversi motivi perché l'autoregistrazione non è buona, riprodotta qui:

  • Il rollback non funzionerà correttamente.
    OK, questa ragione ha senso.

  • Anche la pubblicità non funzionerà.
    Ignorando il fatto che la pubblicità è importante solo per alcuni tipi di client software, non capisco perché questo sia un problema. È necessario pubblicizzare solo l'applicazione principale, non i suoi componenti.

  • L'auto-registrazione non supporta correttamente le chiavi per utente.
    E allora? Dare a ogni utente l'accesso a " common " i componenti non sono una brutta cosa a meno che non ci siano molti utenti sulla macchina, nel qual caso non è ancora fine mondiale.

  • L'autoregistrazione è più suscettibile agli errori di codifica.
    Posso assolutamente crederci, tranne nel caso delle DLL scritte da Microsoft (potrebbero avere errori, ma non credo che fidarsi di loro sia irragionevole). E nel caso di tlbs e ocx generati dal software, gli errori di codifica sembrano abbastanza improbabili.

  • Le dll autoregistranti possono essere collegate ad altre dll.
    Nel caso di DLL generate da programmi, non sembra probabile che l'auto-registrazione fallisca a causa di ciò, ma l'aggiunta manuale delle chiavi di registrazione avrebbe funzionato. Preferirei che la mia autoregistrazione restituisse un errore che mi mancano le DLL.

    Sono sicuro che questo attiverà fiamme: /

    Modifica: argomenti barrati che penso contano davvero (in base alle risposte degli utenti e alle mie).

        
  • È stato utile?

    Soluzione

    Per quanto riguarda questo elemento:

      
        
    • L'auto-registrazione non supporta correttamente le chiavi per utente.

           

      E allora? Dare accesso ad ogni utente   a " comune " i componenti non sono male   cosa a meno che tu non abbia molti utenti   sulla macchina, nel qual caso lo è   non ha ancora fine mondiale.

    •   

    Non è solo una questione di quanti utenti si trovano su una macchina, ma anche quali autorizzazioni hanno. Se non è un amministratore, è improbabile che l'utente disponga dell'autorizzazione per aggiornare la parte HKEY_LOCAL_MACHINE del registro.

    Altri suggerimenti

    L'articolo

      

    Le dll autoregistranti possono essere collegate a   altre DLL

    si applica quando si tenta di registrare la dll, ma il programma di installazione non ha ancora copiato / installato un'altra dll richiesta dalla funzione di registrazione.

    Aggiungerei un potenziale "quotcha gotcha" in cui mi sono imbattuto (con il codice di autoregistrazione generato automaticamente per gli oggetti MS COM):

    L'auto-registrazione esegue l'eseguibile, con tutto ciò che comporta / richiede. Quindi, ad esempio, se il componente registra direttamente o indirettamente il fatto che è stato attivato (forse per la registrazione di sicurezza se il componente deve essere eseguito solo in punti molto specifici o in contesti molto specifici o in coordinamento con altre applicazioni), la registrazione sembrerà essere un'attivazione (a meno che tu non stia attento alla registrazione). Questo può anche essere interessante se i tuoi registri registrano, ad esempio, il contesto in cui è stato utilizzato il componente, nel qual caso avrai qualsiasi contesto ereditato che ha innescato l'autoregistrazione.

    Nella maggior parte dei casi non è un grosso problema, ma a volte può causare qualche sottile confusione. Lo aggiungerei all'elenco dei motivi per cui probabilmente non è preferibile.

    Autorizzato sotto: CC-BY-SA insieme a attribuzione
    Non affiliato a StackOverflow
    scroll top