Chiavi del Registro di sistema di autenticazione

Quando installa un provider di rete, l'applicazione deve creare le chiavi e i valori del Registro di sistema descritti in questo argomento. Queste chiavi e valori forniscono informazioni a MPR sui provider di rete installati nel sistema. MpR controlla queste chiavi all'avvio e carica le DLL del provider di rete trovate.

Prima di creare un set di chiavi per contenere informazioni sul provider di rete, è necessario aggiungere il nome del provider di rete alla chiave di ordine . Questa chiave è una sottochiave della chiave seguente:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Control
            NetworkProvider

La chiave dell'ordine contiene un singolo valore, ProviderOrder, che elenca i provider installati e specifica l'ordine in cui devono essere provati durante le operazioni che vengono eseguite tramite provider fino a quando non viene trovato un provider di accettazione.

Il valore ProviderOrder contiene un elenco delimitato da virgole dei nomi delle chiavi. Ogni nome di chiave in ProviderOrder identifica un provider di rete. Quando MPR esegue il ciclo attraverso i provider, li chiama nell'ordine in cui vengono visualizzati in questo elenco.

Il nome del provider impostato in ProviderOrder deve essere usato anche come nome della chiave del Registro di sistema che contiene informazioni su tale provider. Le chiavi del Registro di sistema specifiche del provider vengono create come sottochiavi della chiave seguente:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services

In altre parole, i nomi del provider specificati in ProviderOrder sono il percorso del Registro di sistema delle chiavi specifiche del provider di rete, rispetto al percorso seguente:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services

Quando il servizio provider di rete è installato, l'applicazione di installazione deve aggiungere una chiave come indicato di seguito:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services
            ProviderName

Dove ProviderName è il nome del provider di rete come specificato nel valore ProviderOrder della chiave di ordine . Il valore Gruppo nella chiave ProviderName deve essere impostato su "NetworkProvider". Questo identifica il servizio come incluso nel gruppo di provider di rete.

È anche necessario creare una sottochiave di ProviderName, networkprovider. Questa chiave contiene i valori seguenti che descrivono il provider di rete.

Valore Descrizione
Nome
Contiene il nome del provider. Questo nome viene visualizzato all'utente come nome della rete nelle finestre di dialogo sfoglia e deve corrispondere al campo lpProvider restituito nelle strutture NETRESOURCE . Questo nome deve essere una variante del nome del prodotto, preferibilmente con alcune indicazioni dell'azienda, in modo che sia chiaro e univoco. "MS-LanMan" ad esempio è un buon nome, mentre "The Net" sarebbe una scelta scarsa.
ProviderPath
Contiene il percorso completo della DLL che implementa il provider di rete. MPR chiama LoadLibrary in questo percorso.

I valori seguenti vengono usati solo dai provider di rete che supportano le funzioni di gestione delle credenziali, NPLogonNotify e NPPasswordChangeNotify.

Valore Descrizione
Classe
DWORD che identifica la classe o il tipo di funzionalità del provider supportata da questo provider. I valori possono essere aggiunti all'operatore OR quando appropriato. I valori validi per questo sono WN_NETWORK_CLASS, WN_CREDENTIAL_CLASS, WN_PRIMARY_AUTHENT_CLASS e WN_SERVICE_CLASS.
Anche se un provider può supportare la funzionalità di autenticazione primaria, verrà usato un altro mezzo per determinare quale autenticatore è primario.
Windows XP/2000: Il passaggio degli autenticatori primari non è supportato, quindi questo valore viene ignorato.
AuthentProviderPath
Si tratta del nome di file completo per la DLL che esporta funzioni di gestione delle credenziali. Questo valore è utile (ma non obbligatorio) solo quando il provider viene identificato come un provider di CREDENTIAL_CLASS o PRIMARY_AUTHENT_CLASS. Se questo valore non è presente per un provider di questa classe, le funzioni di gestione delle credenziali devono essere esportate dalla DLL identificata dal valore ProviderPath. Questo valore viene usato solo se è consigliabile creare un pacchetto delle funzioni di rete e delle funzioni di gestione credenziali in DLL separate.

Oltre ai valori usati per registrare provider di rete e gestioni credenziali, è possibile aggiungere un valore al Registro di sistema per registrare una DLL per ricevere le notifiche di connessione. A tale scopo, creare un valore REG_EXPAND_SZ sotto la chiave seguente:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Control
            NetworkProvider
               Notifyees

Questo valore deve specificare il percorso di una DLL che implementa l'API di notifica di connessione. Il nome di questo valore può essere qualsiasi elemento desiderato, purché non sia in conflitto con nomi di valore preesistenti.

Esempio

L'esempio seguente illustra le chiavi del Registro di sistema per un sistema con due provider di rete installati: LanmanWorkStation e AnotherNetSvc. AnotherNetSvc è anche un gestore delle credenziali. Nell'esempio i nomi delle chiavi sono in grassetto e i nomi dei valori sono corsivi.

HKEY_LOCAL_MACHINE\SISTEMA\Currentcontrolset\Controllo\NetworkProvider\Ordine

ProviderOrder = "LanmanWorkStation,AnotherNetSvc"

HKEY_LOCAL_MACHINE\SISTEMA\Currentcontrolset\Controllo\NetworkProvider\Notifiche

MyNotifyApp = "c:\connect\connect.dll"

HKEY_LOCAL_MACHINE\SISTEMA\Currentcontrolset\Servizi\LanmanWorkStation\

Group = "NetworkProvider"

HKEY_LOCAL_MACHINE\SISTEMA\Currentcontrolset\Servizi\LanmanWorkStation\NetworkProvider

Name = "NT LanMan"ProviderPath = "ntlanman.dll"

Classe = 0x00000001 (WN_NETWORK_CLASS)

HKEY_LOCAL_MACHINE\SISTEMA\Currentcontrolset\Servizi\AnotherNetSvc\

Group = "NetworkProvider"

HKEY_LOCAL_MACHINE\SISTEMA\Currentcontrolset\Servizi\AnotherNetSvc\NetworkProvider

Name = "Another Network"ProviderPath = "c:\another\anet.dll"

Classe = 0x00000003 (WN_NETWORK_CLASS | WN_CREDENTIAL_CLASS)

AuthentProviderPath = "c:\another\anetCM.dll"