Aggiunta dei nomi di dominio di terzo livelloAdd Third-Level Domain Names

Si applica a: Windows Server 2016 Essentials, Windows Server 2012 R2 Essentials, Windows Server 2012 EssentialsApplies To: Windows Server 2016 Essentials, Windows Server 2012 R2 Essentials, Windows Server 2012 Essentials

È possibile aggiungere la possibilità per gli utenti di richiedere nomi di dominio di terzo livello nella procedura guidata per l'impostazione dei nomi di dominio.You can add the ability for users to request third-level domain names in the Set Up Domain Name Wizard. A tale scopo, creare e installare un assembly di codice utilizzato da Gestione dominio nel sistema operativo.You do this by creating and installing a code assembly that is used by the Domain Manager in the operating system.

Creazione di un provider dei nomi di dominio di terzo livelloCreate a provider of third-level domain names

È possibile rendere disponibili nomi di dominio di terzo livello attraverso la creazione e l'installazione di un assembly di codice che fornisce i nomi di dominio alla procedura guidata.You can make third-level domain names available by creating and installing a code assembly that provides the domain names to the wizard. A tale scopo, completare le seguenti attività:To do this, you complete the following tasks:

Aggiungere un'implementazione dell'interfaccia IDomainSignupProvider all'assemblyAdd an implementation of the IDomainSignupProvider interface to the assembly

L'interfaccia IDomainSignupProvider viene utilizzata per aggiungere offerte di domini alla procedura guidata.The IDomainSignupProvider interface is used to add domain offerings to the wizard.

Per aggiungere il codice IDomainSignupProvider all'assemblyTo add the IDomainSignupProvider code to the assembly
  1. Accedere a Visual Studio 2008 come amministratore facendo clic con il pulsante destro del mouse sul programma nel menu Start, quindi selezionando Esegui come amministratore.Open Visual Studio 2008 as an administrator by right-clicking the program in the Start menu and selecting Run as administrator.

  2. Fare clic su File, quindi su Nuovoe infine su Progetto.Click File, click New, and then click Project.

  3. Nella finestra di dialogo Nuovo progetto , fare clic su Visual C#, quindi su Libreria di classi, infine immettere un nome per la soluzione e fare clic su OK.In the New Project dialog box, click Visual C#, click Class Library, enter a name for the solution, and then click OK.

  4. Rinominare il file Class1.cs.Rename the Class1.cs file. Ad esempio, MyDomainNameProvider.cs.For example, MyDomainNameProvider.cs

  5. Aggiungere i riferimenti ai file Wssg.Web.DomainManagerObjectModel.dll, CertManaged.dll, WssgCertMgmt.dll e WssgCommon.dll.Add references to the Wssg.Web.DomainManagerObjectModel.dll, CertManaged.dll, WssgCertMgmt.dll, and WssgCommon.dll files.

  6. Aggiungere i seguenti elementi utilizzando le istruzioni.Add the following using statements.

    
    using System.Collections.ObjectModel;  
    using System.Net;  
    using System.Net.Sockets;  
    using Microsoft.WindowsServerSolutions.Certificates;  
    using Microsoft.WindowsServerSolutions.CertificateManagement;  
    using Microsoft.WindowsServerSolutions.Common;  
    using Microsoft.Win32;  
    
  7. Modificare lo spazio dei nomi e l'intestazione della classe in modo che corrispondano a quelli del seguente esempio.Change the namespace and the class header to match the following example.

    namespace Microsoft.WindowsServerSolutions.RemoteAccess.Domains  
    {  
        public class MyDomainNameProvider : IDomainSignupProvider  
        {  
        }  
    }  
    
  8. Aggiungere il metodo Initialize e le variabili richieste alla classe per definire le offerte presentate nella procedura guidata.Add the Initialize method and the required variables to the class, which defines the offerings that are presented in the wizard.

    Nota

    Il metodo Initialize definisce per il provider del dominio un identificatore che deve essere univoco.The Initialize method defines an identifier for the domain provider that must be unique. Solitamente, a tale scopo occorre specificare un GUID come identificatore.A typical way to do this is to define a GUID as the identifier. Per altre informazioni sulla creazione di un GUID, vedere Crea GUID (guidgen.exe).For more information about creating a GUID, see Create Guid (guidgen.exe).

    Il seguente esempio di codice mostra il metodo Initialize.The following code example shows the Initialize method.

    
    static readonly Guid MyID = new Guid("8C999DF5-696A-47af-822D-94F1673D3397");  
    public Guid ID { get { return MyID; } }  
    public string Name { get { return "My Provider"; } }  
    List<Offering> offerings = new List<Offering>();  
    
    public void Initialize(DomainProviderSettings config)  
    {  
       var offer1 = new Offering()  
       {  
          Description = "My Domain Provider",  
          Name = "Offering 1",  
          ProviderID = ID,  
          MoreInfoUrl = new Uri("http://www.contoso.com"),  
          MembershipServiceName = "My Membership",  
          EulaUrl = new Uri("http://www.contoso.com"),  
       };  
    
       this.offerings.Add(offer1);  
       RegistryKey key =   
          Registry.LocalMachine.CreateSubKey(@"Software\Microsoft\Windows Server\Domain Manager\Settings");  
       key.Close();  
    }  
    
  9. Aggiungere il metodo GetOfferings, che restituisce l'elenco di offerte inizializzato al passaggio precedente.Add the GetOfferings method, which returns the list of offerings that was initialized in the previous step. Il seguente esempio di codice mostra il metodo GetOfferings.The following code example shows the GetOfferings method.

    
    public ReadOnlyCollection<Offering> GetOfferings()  
    {  
       return this.offerings.AsReadOnly();  
    }  
    
  10. Aggiungere il metodo FindOfferingForDomain, che restituisce l'offerta dall'elenco.Add the FindOfferingForDomain method, which returns the offering from the list. Il seguente esempio di codice mostra il metodo FindOfferingForDomain.The following code example shows the FindOfferingForDomain method.

    
    public Offering FindOfferingForDomain(string domain)  
    {  
       // Return the offering that has the domain name.  
       return offerings[0];  
    }  
    
    
  11. Aggiungere il metodo SetCredentials, che definisce le credenziali richieste per accedere alle offerte.Add the SetCredentials method, which defines the credentials that are required to access the offerings. Il seguente esempio di codice mostra il metodo SetCredentials.The following code example shows the SetCredentials method.

    
    private string currentUser { get; set; }  
    private string currentPassword { get; set; }  
    
    public bool SetCredentials(DomainNameRequest request,   
       DomainProviderCredentials credentials, bool validate)  
    {  
       currentUser = credentials.UserName;  
       currentPassword = credentials.Password;  
       if (validate)  
       {  
          return ValidateCredentials();  
       }  
    
       return true;  
    }  
    
  12. Aggiungere il metodo ValidateCredentials, che convalida le credenziali definite da SetCredentials.Add the ValidateCredentials method, which validates the credentials defined by SetCredentials. Il seguente esempio di codice mostra il metodo ValidateCredentials.The following code example shows the ValidateCredentials method.

    
    public static readonly string offerUser = "user1@contoso.com";  
    public static readonly string offerPassword = "password1";  
    
    public bool ValidateCredentials()  
    {  
       if (IsUser())  
          return string.Equals(currentPassword, offerPassword);  
       else  
          return false;  
    }   
    
    private bool IsUser()  
    {  
       return string.Equals(currentUser, offerUser, StringComparison.OrdinalIgnoreCase);  
    }  
    
  13. Aggiungere il metodo GetAvailableDomainRoots, che restituisce l'elenco dei nomi di dominio radice supportati dall'offerta specificata nella richiesta.Add the GetAvailableDomainRoots method, which returns the list of root domain names that are supported by the offering specified in the request. Questo elenco dei nomi di dominio radice non deve essere vuoto.This list of root domain names must not be empty. Il seguente codice di esempio mostra il metodo GetAvailableDomainRoots.The following code example shows the GetAvailableDomainRoots method.

    
    public ReadOnlyCollection<string> GetAvailableDomainRoots(DomainNameRequest request)  
    {  
       List<string> list = new List<string>();  
       list.Add("domain1.com");  
       list.Add("domain1.org");  
    
       return list.AsReadOnly();  
    }  
    
  14. Aggiungere il metodo GetUserDomainNames, che restituisce un elenco dei nomi di dominio già di proprietà dell'utente corrente, in relazione all'offerta corrente.Add the GetUserDomainNames method, which returns a list of domain names that the current user already owns, relative to the current offering. Questo elenco può essere vuoto.This list may be empty. Il seguente codice di esempio mostra il metodo GetUserDomainNames.The following code example shows the GetUserDomainNames method.

    
    public static readonly string AvailableDomain1 = "available.domain1.com",  
       AvailableDomain2 = "available.domain2.com";  
    public static readonly string OccupiedDomain1 = "occupied.domain1.com",  
       OccupiedDomain2 = "occupied.domain2.com";  
    
    public ReadOnlyCollection<string> GetUserDomainNames(DomainNameRequest request)  
    {  
       var userDomains = new List<string>();  
       userDomains.Add(OccupiedDomain1);  
       userDomains.Add(AvailableDomain1);  
    
       return userDomains.AsReadOnly();  
    }  
    
  15. Aggiungere il metodo GetUserDomainQuota, che restituisce il numero massimo di domini consentito dall'offerta specificata.Add the GetUserDomainQuota method, which returns the maximum number of domains that the specified offering allows. Se non è applicabile un massimo,il metodo restituisce 0.If a maximum is not applicable, this method should return 0. Il seguente codice di esempio mostra il metodo GetUserDomainQuota.The following example shows the GetUserDomainQuota method.

    
    public int GetUserDomainQuota(DomainNameRequest request)  
    {  
       return 0;  
    }  
    
  16. Aggiungere il metodo CheckDomainAvailability, che verifica la disponibilità del nome di dominio richiesto e può restituire un elenco di suggerimenti.Add the CheckDomainAvailability method, which checks for the availability of the requested domain name and can return a list of suggestions. Il seguente codice di esempio mostra il metodo CheckDomainAvailability.The following code example shows the CheckDomainAvailability method.

    
    public bool CheckDomainAvailability(DomainNameRequest request,   
       out ReadOnlyCollection<string> suggestions)  
    {  
       suggestions = null;  
    
       return true;  
    }  
    
  17. Aggiungere il metodo CommitDomain, che conferma il nome di dominio richiesto.Add the CommitDomain method, which commits the requested domain name. Il corretto completamento di questo metodo implica l'associazione del nome di dominio all'account utente, la chiamata immediata al provider dei servizi di manutenzione per recuperare il certificato se lo stato è completamente operativo, nonché l'attivazione del provider e dell'offerta.Successful completion of this method implies that the domain name is associated with the user account, the maintenance provider will be called immediately to retrieve the certificate if the state is FullyOperational, and the provider and offering become active. Il seguente codice di esempio mostra il metodo CommitDomain.The following code example shows the CommitDomain method.

    
    public DomainStatus CommitDomain(DomainNameRequest request)  
    {              
       ReadOnlyCollection<string> suggestions;  
       if (!CheckDomainAvailability(request, out suggestions))  
       {  
          throw new DomainException(FailureReason.InvalidDomainName, null, null);  
       }  
    
       return DomainStatus.Ready;  
    }  
    
  18. Aggiungere il metodo ReleaseDomain, che notifica al provider l'intenzione da parte dell'utente di rilasciare il nome di dominio.Add the ReleaseDomain method, which informs the provider that the user wants to release the domain name. Il seguente codice di esempio mostra il metodo ReleaseDomain.The following code example shows the ReleaseDomain method.

    
    public bool ReleaseDomain(DomainNameRequest request)  
    {  
       return true;  
    }  
    
  19. Aggiungere il metodo GetProviderLandingUrl, che restituisce l'URL per la pagina di destinazione nel flusso di lavoro di accesso al dominio.Add the GetProviderLandingUrl method, which returns the URL for landing page in the domain signup workflow. Il seguente codice di esempio mostra il metodo GetProviderLandingUrl.The following code example shows the GetProviderLandingUrl method.

    
    public Url GetProviderLandingUrl(DomainNameRequest request)  
    {  
       return new Url("www.contoso.com");  
    }  
    
  20. Aggiungere il metodo GetDomainMaintenanceProvider, che restituisce un'istanza di IDomainMaintenanceProvider utilizzata per le attività di manutenzione del dominio.Add the GetDomainMaintenanceProvider method, which returns an instance of IDomainMaintenanceProvider that is used for domain maintenance tasks. Questo metodo viene richiamato dopo il corretto completamento del metodo CommitDomain e all'avvio di Gestione dominio.This method is called after the CommitDomain method is successful, and when the Domain Manager starts. Il seguente codice di esempio mostra il metodo GetDomainMaintenanceProvider.The following code example shows the GetDomainMaintenanceProvider method.

    
    public IDomainMaintenanceProvider GetDomainMaintenanceProvider()  
    {  
       return new MyDomainMaintenanceProvider();  
    }  
    
  21. Salvare il progetto senza chiuderlo, poiché la procedura successiva prevede un'aggiunta ad esso.Save the project and do not close it because you will add to it with the next procedure. Fino a che la procedura successiva non sarà stata completata, non sarà possibile generare il progetto.You will not be able to build the project until you complete the next procedure.

Aggiungere un'implementazione dell'interfaccia IDomainMaintenanceProvider all'assemblyAdd an implementation of the IDomainMaintenanceProvider interface to the assembly

IDomainMaintenanceProvider viene utilizzato per gestire il dominio dopo averlo creato.The IDomainMaintenanceProvider is used to maintain the domain after it is created.

Per aggiungere il codice IDomainMaintenanceProvider all'assemblyTo add the IDomainMaintenanceProvider code to the assembly
  1. Aggiungere l'intestazione della classe per il provider dei servizi di manutenzione del dominio.Add the class header for the domain maintenance provider. Verificare che il nome definito dall'utente per il provider corrisponda al nome nel metodo GetDomainMaintenanceProvider precedentemente definito.Ensure that the name you define for the provider matches the name in the GetDomainMaintenanceProvider method that you previously defined.

    
    public class MyDomainMaintenanceProvider : IDomainMaintenanceProvider  
    {  
    }  
    
  2. Aggiungere il metodo Activate, che imposta il provider attivo.Add the Activate method, which sets the active provider. Il seguente codice di esempio mostra il metodo Activate.The following code example shows the Activate method.

    
    string DomainName { get; set; }  
    protected DomainProviderSettings Settings { get; set; }  
    
    public void Activate(DomainProviderSettings settings,   
       DomainNameConfiguration config, DomainProviderCredentials credentials)  
    {  
       Settings = settings;  
       SetCredentials(credentials);  
       DomainName = config.AutoConfiguredAnywhereAccessFullName.Punycode;  
    }  
    
  3. Aggiungere il metodo Deactivate, che consente di disattivare tutte le azioni.Add the Deactivate method, which is used to deactivate all actions. Il seguente codice di esempio mostra il metodo Deactivate.The following code example shows the Deactivate method.

    
    public void Deactivate()  
    {  
       //Deactivate all actions  
    }  
    
    
  4. Aggiungere il metodo SetCredentials, che aggiorna le credenziali dell'utente.Add the SetCredentials method, which updates the user credentials. Ad esempio, questo metodo può essere richiamato per aggiornare credenziali non più valide.For example, this method may be called to update credentials that are no longer valid. Il seguente esempio di codice mostra il metodo SetCredentials.The following code example shows the SetCredentials method.

    
    protected DomainProviderCredentials Credentials { get; set; }  
    
    public bool SetCredentials(DomainProviderCredentials credentials)  
    {  
       this.Credentials = credentials;  
    
       return true;  
    }  
    
  5. Aggiungere il metodo ValidateCredentials, che convalida le credenziali specificate.Add the ValidateCredentials method, which validates the specified credentials. Il seguente esempio di codice mostra il metodo ValidateCredentials.The following code example shows the ValidateCredentials method.

    
    public static readonly string offerUser = "user1@contoso.com";  
    public static readonly string offerPassword = "password1";  
    
    public bool ValidateCredentials()  
    {  
       if (string.Equals(this.Credentials.UserName,   
          offerUser,   
          StringComparison.OrdinalIgnoreCase) &&   
             string.Equals(this.Credentials.Password, offerPassword))  
          return true;  
    
       return false;  
    }  
    
  6. Aggiungere il metodo GetPublicAddress, che restituisce l'indirizzo IP esterno del server.Add the GetPublicAddress method, which returns external IP address of the server. Il seguente codice di esempio mostra il metodo GetPublicAddress.The following code example shows the GetPublicAddress method.

    
    public IPAddress GetPublicIPAddress()  
    {  
       string PublicIP = "0.0.0.0";  
       using (RegistryKey key = ProductInfo.RegKey.OpenSubKey("Domain Manager\\Settings", true))  
       {  
          PublicIP = (key == null) ? "0.0.0.0" : key.GetValue("PublicIP", "0.0.0.0").ToString();  
       }  
       IPAddress ip = IPAddress.Parse(PublicIP);  
    
       if (PublicIP == "0.0.0.0")  
       {  
          string strHostName = Dns.GetHostName();  
          IPHostEntry ipEntry = Dns.GetHostEntry(strHostName);  
    
          IPAddress[] addr = ipEntry.AddressList;  
          foreach (IPAddress add in addr)  
          {  
             if (add.AddressFamily == AddressFamily.InterNetwork)  
             {  
                return add;  
             }  
          }  
       }  
       else  
       {  
          return IPAddress.Parse(PublicIP);  
       }  
    
       return null;    
    }  
    
  7. Aggiungere il metodo SubmitCertificateRequest, che invia la richiesta del certificato per il nome di dominio attualmente configurato.Add the SubmitCertificateRequest method, which submits the certificate request for the currently configured domain name.

    
    string cert=null;  
    
    public void SubmitCertificateRequest(string certificateRequest)  
    {  
       cert = CertManaged.SubmitRequest(certificateRequest, CertCommon.CAServerFQDN + "\\" +      
          CertCommon.CAName,   
          Microsoft.WindowsServerSolutions.CertificateManagement.CRFlags.Base64Header,   
          CertCommon.CATemplate,   
          EncodingFlags.Base64);  
    }  
    
  8. Aggiungere il metodo GetCertificateResponse, che restituisce la risposta di certificato se lo stato del dominio è completamente operativo.Add the GetCertificateResponse method, which returns the certificate response if the domain status is FullyOperational. Questo metodo viene richiamato sia per le richieste di nuovi certificati che per le richieste di rinnovo dei certificati.This method is called for both new certificate requests and for certificate renewal requests. Il seguente codice di esempio mostra il metodo GetCertificateResponse.The following code example shows the GetCertificateResponse method.

    
    public string GetCertificateResponse(bool renew)  
    {  
       return cert;  
    }  
    
  9. Aggiungere il metodo SubmitRenewCertificateRequest, che elabora il rinnovo del certificato.Add the SubmitRenewCertificateRequest method, which processes the renewal of the certificate. Il seguente codice di esempio mostra il metodo SubmitRenewCertificateRequest.The following code example shows the SubmitRenewCertificateRequest method.

    
    public void SubmitRenewCertificateRequest()  
    {  
       // Add certificate renewal code   
    }  
    
  10. Aggiungere il metodo UpdateDNSRecords, che aggiorna i record DNS archiviati dal provider.Add the UpdateDNSRecords method, which updates the DNS records stored by the provider. Il seguente codice di esempio mostra il metodo UpdateDNS.The following code example shows the UpdateDNS method.

    
    public bool UpdateDnsRecords(IList<DnsRecord> records)  
    {  
       string UpdateDNS = "true";  
       using (RegistryKey key = ProductInfo.RegKey.OpenSubKey("Domain Manager\\Settings", true))  
       {  
          UpdateDNS = (key == null) ? "true" : key.GetValue("UpdateDNS", "true").ToString();  
       }  
    
       return UpdateDNS == "true";  
    }  
    
    
  11. Aggiungere il metodo TestConnection, che tenta di stabilire una connessione al servizio back-end.Add the TestConnection method, which attempts to establish a connection to backend service. Se questo metodo richiede l'autenticazione, occorre generare un'eccezione appropriata.If this method requires authentication, an appropriate exception should be thrown. Il seguente codice di esempio mostra il metodo TestConnection.The following code example shows the TestConnection method.

    
    public bool TestConnection()  
    {  
       // Add code to test connection  
    
       return true;  
    }  
    
  12. Aggiungere il metodo GetDomainState, che restituisce lo stato corrente del dominio.Add the GetDomainState method, which returns the current state of the domain. Il seguente codice di esempio mostra il metodo GetDomainState.The following code example shows the GetDomainState method.

    
    public DomainState GetDomainState()  
    {  
       string domainstatus = "FullyOperational";  
       long expirationDate = 365;  
       using (RegistryKey key = ProductInfo.RegKey.OpenSubKey("Domain Manager\\Settings", true))  
       {  
          domainstatus = (key == null) ? "Ready" : key.GetValue("DomainStatus", "Ready").ToString();  
          expirationDate = Int64.Parse(key.GetValue("ExpirationDate", "365").ToString());  
       }  
    
       switch (domainstatus)  
       {  
          case "Failed":  
             return new DomainState(DomainStatus.Failed,   
                null,   
                DateTime.Now.AddDays(expirationDate));  
          case "Ready":  
             return new DomainState(DomainStatus.Ready,   
                null,   
                DateTime.Now.AddDays(expirationDate));  
          case "InRenewal":  
             return new DomainState(DomainStatus.InRenewal,   
                null,   
                DateTime.Now.AddDays(expirationDate));  
          case "InRenewalCustomerInterventionRequired":  
             return new DomainState(DomainStatus.InRenewalCustomerInterventionRequired,   
                null,   
                DateTime.Now.AddDays(expirationDate));  
          case "Pending":  
             return new DomainState(DomainStatus.Pending,   
                null,   
                DateTime.Now.AddDays(expirationDate));  
          case "PendingCustomerInterventionRequired":  
             return new DomainState(DomainStatus.PendingCustomerInterventionRequired,   
                null,   
                DateTime.Now.AddDays(expirationDate));  
          case "RenewalFailed":  
             return new DomainState(DomainStatus.RenewalFailed,   
                null,   
                DateTime.Now.AddDays(expirationDate));  
          default:  
             return new DomainState(DomainStatus.Unknown,   
                null,   
                DateTime.Now.AddDays(expirationDate));                   
          }  
    }  
    
  13. Aggiungere il metodo GetCertificateState, che restituisce lo stato corrente del certificato.Add the GetCertificateState method, which returns the current state of the certificate. Il seguente codice di esempio mostra il metodo GetCertificateState.The following code example shows the GetCertificateState method.

    
    public CertificateState GetCertificateState(bool renew)  
    {  
       return new CertificateState(CertificateStatus.Ready, string.Empty);  
    }  
    
  14. Salvare e generare la soluzione.Save and build the solution.

Firmare l'assembly con una firma AuthenticodeSign the assembly with an Authenticode signature

Per poter utilizzare l'assembly nel sistema operativo, è necessario applicarvi una firma Authenticode.You must Authenticode sign the assembly for it to be used in the operating system. Per altre informazioni sulla firma dell'assembly, vedere Firma e verifica del codice con Authenticode.For more information about signing the assembly, see Signing and Checking Code with Authenticode.

Installare l'assembly nel computer di riferimentoInstall the assembly on the reference computer

Collocare l'assembly in una cartella nel computer di riferimento.Place the assembly in a folder on the reference computer. Annotare il percorso della cartella, dal momento che dovrà essere immesso nel Registro di sistema al passaggio successivo.Make a note of the folder path because you will enter it into the registry in the next step.

Aggiunta di una chiave al Registro di sistemaAdd a key to the registry

L'aggiunta di una voce al Registro di sistema consente di definire le caratteristiche e la posizione dell'assembly.You add a registry entry to define the characteristics and location of the assembly.

Per aggiungere una chiave al Registro di sistemaTo add a key to the registry
  1. Nel computer di riferimento fare clic su Start, immettere regedite quindi premere INVIO.On the reference computer, click Start, enter regedit, and then press Enter.

  2. Nel riquadro sinistro, espandere HKEY_LOCAL_MACHINE, SOFTWARE, Microsoft, quindi Windows Server, Gestione dominio e infine Provider.In the left pane, expand HKEY_LOCAL_MACHINE, expand SOFTWARE, expand Microsoft, expand Windows Server, expand Domain Managers, and then expand Providers.

  3. Fare clic con il pulsante destro del mouse su Provider, scegliere Nuovo, quindi fare clic su Chiave.Right-click Providers, point to New, and then click Key.

  4. Digitare l'identificatore per il provider come nome della chiave.Type the identifier for the provider as the name for the key. L'identificatore è il GUID definito per il provider al passaggio 8 della procedura Aggiunta di un'implementazione dell'interfaccia IDomainSignupProvider all'assembly.The identifier is the GUID that you defined for the provider in step 8 of Add an implementation of the IDomainSignupProvider interface to the assembly.

  5. Fare clic con il pulsante destro del mouse sulla chiave appena creata, quindi fare clic su Valore stringa.Right-click the key that you just created, and then click String Value.

  6. Digitare Assembly per il nome della stringa, quindi premere Invio.Type Assembly for the name of the string, and then press Enter.

  7. Fare clic con il pulsante destro del mouse sulla nuova stringa Assembly nel riquadro destro, quindi fare clic su Modifica.Right-click the new Assembly string in the right pane, and then click Modify.

  8. Digitare il percorso completo del file di assembly precedentemente creato, quindi fare clic su OK.Type the full path to the assembly file that you previously created, and then click OK.

  9. Fare di nuovo clic con il pulsante destro del mouse sulla chiave, quindi fare clic su Valore stringa.Right-click the key again, and then click String Value.

  10. Digitare Abilitata per il nome della stringa, quindi premere Invio.Type Enabled for the name of the string, and then press Enter.

  11. Fare clic con il pulsante destro del mouse sulla nuova stringa Enabled nel riquadro destro, quindi fare clic su Modifica.Right-click the new Enabled string in the right pane, and then click Modify.

  12. Digitare Truee quindi fare clic su OK.Type True, and then click OK.

  13. Fare di nuovo clic con il pulsante destro del mouse sulla chiave, quindi fare clic su Valore stringa.Right-click the key again, and then click String Value.

  14. Digitare Tipo per il nome della stringa, quindi premere Invio.Type Type for the name of the string, and then press Enter.

  15. Fare clic con il pulsante destro del mouse sulla nuova stringa Type nel riquadro destro, quindi fare clic su Modifica.Right-click the new Type string in the right pane, and then click Modify.

  16. Digitare il nome completo della classe del provider definito nell'assembly, quindi fare clic su OK.Type the full class name of your provider defined in the assembly, and then click OK.

Riavviare il servizio di gestione nome dominio di Windows ServerRestart the Windows Server Domain Name Management service

È necessario riavviare il servizio di gestione dei domini di Windows Server affinché il provider diventi disponibile per il sistema operativo.You must restart the Windows Server Domain Management service for the provider to become available to the operating system.

Riavvio del servizioRestart the service
  1. Fare clic su Start, digitare mmce quindi premere INVIO.Click Start, type mmc, and then press Enter.

  2. Se lo snap-in Servizi non è elencato nella console, aggiungerlo completando i seguenti passaggi:If the Services snap-in is not listed in the console, add it by completing the following steps:

    1. Fare clic su Aggiungi/Rimuovi snap-in nel menu File.Click File, and then click Add/Remove Snap-in.

    2. Nell'elenco Snap-in disponibili , fare clic su Servizi, quindi su Aggiungi.In the Available snap-ins list, click Services, and then click Add.

    3. Nella finestra di dialogo Servizi, verificare che il computer locale sia selezionato, quindi fare clic su Fine.In the Services dialog box, ensure that local computer is selected, and then click Finish.

    4. Fare clic su OK per chiudere la finestra di dialogo Aggiungi/Rimuovi snap-in.Click OK to close the Add/Remove snap-ins dialog box.

  3. Fare doppio clic su Servizi, scorrere verso il basso, quindi selezionare Windows Server Domain Management, infine fare clic su Riavvia il servizio.Double-click Services, scroll down and select Windows Server Domain Management, and then click Restart the service.

Vedere ancheSee Also

Creazione e personalizzazione dell'immagine Creating and Customizing the Image
Personalizzazioni aggiuntive Additional Customizations
Preparazione dell'immagine per la distribuzione Preparing the Image for Deployment
Testare l'esperienza dei clientiTesting the Customer Experience