Dodaj nazwy domen trzeciego poziomuAdd Third-Level Domain Names

Dotyczy: 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

Możesz dodać pozwala użytkownikom na żądanie nazwy domen trzeciego poziomu w domenie Kreatora konfigurowania nazwy.You can add the ability for users to request third-level domain names in the Set Up Domain Name Wizard. Można to zrobić, tworzenie i Instalowanie zestawu kodu, który jest używany przez Menedżera domeny w systemie operacyjnym.You do this by creating and installing a code assembly that is used by the Domain Manager in the operating system.

Utwórz dostawcę nazwy domen trzeciego poziomuCreate a provider of third-level domain names

Nazwy domen trzeciego poziomu można udostępnić przez tworzenie i Instalowanie zestawu kodu, który zawiera nazwy domen do kreatora.You can make third-level domain names available by creating and installing a code assembly that provides the domain names to the wizard. Aby to zrobić, należy wykonać następujące zadania:To do this, you complete the following tasks:

Dodaj implementację interfejsu IDomainSignupProvider do zestawu Add an implementation of the IDomainSignupProvider interface to the assembly

Interfejs IDomainSignupProvider służy do dodawania domeny oferty do kreatora.The IDomainSignupProvider interface is used to add domain offerings to the wizard.

Aby dodać kod IDomainSignupProvider do zestawuTo add the IDomainSignupProvider code to the assembly
  1. Otwórz program Visual Studio 2008 jako administrator, klikając prawym przyciskiem myszy program w Start i wybierając polecenie Uruchom jako administrator.Open Visual Studio 2008 as an administrator by right-clicking the program in the Start menu and selecting Run as administrator.

  2. Kliknij przycisk pliku, kliknij przycisk nowy, a następnie kliknij przycisk projektu.Click File, click New, and then click Project.

  3. W nowy projekt okno dialogowe, kliknij przycisk języka Visual C#, kliknij przycisk Biblioteka klas, wprowadź nazwę dla rozwiązania, a następnie kliknij przycisk OK.In the New Project dialog box, click Visual C#, click Class Library, enter a name for the solution, and then click OK.

  4. Zmień nazwę pliku Class1.cs.Rename the Class1.cs file. Na przykład MyDomainNameProvider.csFor example, MyDomainNameProvider.cs

  5. Dodawanie odwołania do plików Wssg.Web.DomainManagerObjectModel.dll, CertManaged.dll, WssgCertMgmt.dll i WssgCommon.dll.Add references to the Wssg.Web.DomainManagerObjectModel.dll, CertManaged.dll, WssgCertMgmt.dll, and WssgCommon.dll files.

  6. Dodaj następujący przy użyciu instrukcji.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. Zmienianie nazw i nagłówek klasy, aby dopasować w poniższym przykładzie.Change the namespace and the class header to match the following example.

    namespace Microsoft.WindowsServerSolutions.RemoteAccess.Domains  
    {  
        public class MyDomainNameProvider : IDomainSignupProvider  
        {  
        }  
    }  
    
  8. Dodaj metoda inicjowania i zmienne wymagane do klasy, który definiuje oferty, które są przedstawione w kreatorze.Add the Initialize method and the required variables to the class, which defines the offerings that are presented in the wizard.

    Uwaga

    Metoda inicjowania Określa identyfikator dostawcy domeny, który musi być unikatowa.The Initialize method defines an identifier for the domain provider that must be unique. Typowym sposobem, w tym celu jest zdefiniować jako identyfikator GUID.A typical way to do this is to define a GUID as the identifier. Aby uzyskać więcej informacji na temat tworzenia identyfikatora GUID, zobacz (guidgen.exe) utworzyć identyfikator Guid.For more information about creating a GUID, see Create Guid (guidgen.exe).

    W poniższym przykładzie przedstawiono metodę inicjowania.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. Dodaj metodę GetOfferings, która zwraca listę oferty, która została zainicjowana w poprzednim kroku.Add the GetOfferings method, which returns the list of offerings that was initialized in the previous step. W poniższym przykładzie przedstawiono metodę GetOfferings.The following code example shows the GetOfferings method.

    
    public ReadOnlyCollection<Offering> GetOfferings()  
    {  
       return this.offerings.AsReadOnly();  
    }  
    
  10. Dodaj metodę FindOfferingForDomain, która zwraca oferta z listy.Add the FindOfferingForDomain method, which returns the offering from the list. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę SetCredentials, która określa poświadczenia, które są wymagane do dostępu do oferty.Add the SetCredentials method, which defines the credentials that are required to access the offerings. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę ValidateCredentials, która sprawdza poprawność poświadczeń zdefiniowane przez SetCredentials.Add the ValidateCredentials method, which validates the credentials defined by SetCredentials. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę GetAvailableDomainRoots, która zwraca listę nazw domen głównego, które są obsługiwane przez oferty określony w żądaniu.Add the GetAvailableDomainRoots method, which returns the list of root domain names that are supported by the offering specified in the request. Ta lista nazwy domeny katalogu głównego nie może być pusta.This list of root domain names must not be empty. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę GetUserDomainNames, która zwraca listę nazw domen, które już właścicielem jest bieżący użytkownik, względem bieżąca oferta.Add the GetUserDomainNames method, which returns a list of domain names that the current user already owns, relative to the current offering. Ta lista może być pusta.This list may be empty. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę GetUserDomainQuota, która zwraca maksymalną liczbę domen, które umożliwia określonej oferty.Add the GetUserDomainQuota method, which returns the maximum number of domains that the specified offering allows. Jeśli maksymalnie nie ma zastosowania, tej metody należy zwrócić 0.If a maximum is not applicable, this method should return 0. W poniższym przykładzie pokazano metody GetUserDomainQuota.The following example shows the GetUserDomainQuota method.

    
    public int GetUserDomainQuota(DomainNameRequest request)  
    {  
       return 0;  
    }  
    
  16. Dodaj metodę CheckDomainAvailability, która sprawdza dostępność żądanej nazwie domeny i może zwrócić listę sugestie.Add the CheckDomainAvailability method, which checks for the availability of the requested domain name and can return a list of suggestions. W poniższym przykładzie przedstawiono metodę CheckDomainAvailability.The following code example shows the CheckDomainAvailability method.

    
    public bool CheckDomainAvailability(DomainNameRequest request,   
       out ReadOnlyCollection<string> suggestions)  
    {  
       suggestions = null;  
    
       return true;  
    }  
    
  17. Dodaj metodę CommitDomain, która zatwierdza żądanej nazwie domeny.Add the CommitDomain method, which commits the requested domain name. Ukończenie tej metody oznacza, że nazwa domeny jest skojarzona z kontem użytkownika, dostawca konserwacji będzie wywoływana natychmiast pobrać certyfikatu, jeśli jest to FullyOperational i dostawcy i oferty stają się aktywne.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. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę ReleaseDomain, które informuje o tym dostawcy, który użytkownik chce wydanie nazwy domeny.Add the ReleaseDomain method, which informs the provider that the user wants to release the domain name. W poniższym przykładzie przedstawiono metodę ReleaseDomain.The following code example shows the ReleaseDomain method.

    
    public bool ReleaseDomain(DomainNameRequest request)  
    {  
       return true;  
    }  
    
  19. Dodaj metodę GetProviderLandingUrl, która zwraca adres URL strona początkowa w przepływie pracy zapisywania się do domeny.Add the GetProviderLandingUrl method, which returns the URL for landing page in the domain signup workflow. W poniższym przykładzie przedstawiono metodę GetProviderLandingUrl.The following code example shows the GetProviderLandingUrl method.

    
    public Url GetProviderLandingUrl(DomainNameRequest request)  
    {  
       return new Url("www.contoso.com");  
    }  
    
  20. Dodaj metodę GetDomainMaintenanceProvider, która zwraca wystąpienie IDomainMaintenanceProvider służący do zadania konserwacji domeny.Add the GetDomainMaintenanceProvider method, which returns an instance of IDomainMaintenanceProvider that is used for domain maintenance tasks. Ta metoda jest wywoływana po metody CommitDomain zakończyło się powodzeniem, a podczas uruchamiania programu Menedżer domeny.This method is called after the CommitDomain method is successful, and when the Domain Manager starts. W poniższym przykładzie przedstawiono metodę GetDomainMaintenanceProvider.The following code example shows the GetDomainMaintenanceProvider method.

    
    public IDomainMaintenanceProvider GetDomainMaintenanceProvider()  
    {  
       return new MyDomainMaintenanceProvider();  
    }  
    
  21. Zapisz projektu i nie zamknij go, ponieważ spowoduje dodanie do niego do następnej procedury.Save the project and do not close it because you will add to it with the next procedure. Nie będziesz w stanie zbudować projektu dopiero po wykonaniu następnej procedury.You will not be able to build the project until you complete the next procedure.

Dodaj implementację interfejsu IDomainMaintenanceProvider do zestawu Add an implementation of the IDomainMaintenanceProvider interface to the assembly

IDomainMaintenanceProvider służy do obsługi domeny po jego utworzeniu.The IDomainMaintenanceProvider is used to maintain the domain after it is created.

Aby dodać kod IDomainMaintenanceProvider do zestawuTo add the IDomainMaintenanceProvider code to the assembly
  1. Dodaj nagłówek klasy dostawcy konserwacji domeny.Add the class header for the domain maintenance provider. Upewnij się, że nazwa, który można zdefiniować dla dostawcy zgodna z nazwą w metodzie GetDomainMaintenanceProvider uprzednio zdefiniowany.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. Dodaj metodę aktywacji, ustawia active dostawcy.Add the Activate method, which sets the active provider. W poniższym przykładzie przedstawiono metodę aktywacji.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. Dodaj metodę Dezaktywuj, który jest używany do Wyłącz wszystkie operacje.Add the Deactivate method, which is used to deactivate all actions. W poniższym przykładzie przedstawiono metodę Dezaktywuj.The following code example shows the Deactivate method.

    
    public void Deactivate()  
    {  
       //Deactivate all actions  
    }  
    
  4. Dodaj metodę SetCredentials, która aktualizuje poświadczeń użytkownika.Add the SetCredentials method, which updates the user credentials. Na przykład aby zaktualizować poświadczenia, które nie są już prawidłowe można wywołać tej metody.For example, this method may be called to update credentials that are no longer valid. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę ValidateCredentials, która sprawdza poprawność poświadczeń określony.Add the ValidateCredentials method, which validates the specified credentials. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę GetPublicAddress, która zwraca zewnętrzny adres IP serwera.Add the GetPublicAddress method, which returns external IP address of the server. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę SubmitCertificateRequest, która przesyła żądanie certyfikatu dla nazwy domeny aktualnie skonfigurowane.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. Dodaj metodę GetCertificateResponse, która zwraca odpowiedź certyfikatu, jeśli jest w stanie domeny FullyOperational.Add the GetCertificateResponse method, which returns the certificate response if the domain status is FullyOperational. Ta metoda jest wywoływana dla obu nowych żądań certyfikatów i żądania odnowienia certyfikatu.This method is called for both new certificate requests and for certificate renewal requests. W poniższym przykładzie przedstawiono metodę GetCertificateResponse.The following code example shows the GetCertificateResponse method.

    
    public string GetCertificateResponse(bool renew)  
    {  
       return cert;  
    }  
    
  9. Dodaj metodę SubmitRenewCertificateRequest, która przetwarza odnawiania certyfikatu.Add the SubmitRenewCertificateRequest method, which processes the renewal of the certificate. W poniższym przykładzie przedstawiono metodę SubmitRenewCertificateRequest.The following code example shows the SubmitRenewCertificateRequest method.

    
    public void SubmitRenewCertificateRequest()  
    {  
       // Add certificate renewal code   
    }  
    
  10. Dodaj metodę UpdateDNSRecords, która aktualizuje rekordy DNS przechowywane przez dostawcę.Add the UpdateDNSRecords method, which updates the DNS records stored by the provider. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę TestConnection, która podejmuje próbę nawiązania połączenia z usługi wewnętrznej bazy danych.Add the TestConnection method, which attempts to establish a connection to backend service. Jeśli ta metoda wymaga uwierzytelnienia, odpowiednie powinny być wyjątek.If this method requires authentication, an appropriate exception should be thrown. W poniższym przykładzie przedstawiono metodę TestConnection.The following code example shows the TestConnection method.

    
    public bool TestConnection()  
    {  
       // Add code to test connection  
    
       return true;  
    }  
    
  12. Dodaj metodę GetDomainState, która zwraca bieżącego stanu domeny.Add the GetDomainState method, which returns the current state of the domain. W poniższym przykładzie przedstawiono metodę 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. Dodaj metodę GetCertificateState, która zwraca bieżącego stanu certyfikatu.Add the GetCertificateState method, which returns the current state of the certificate. W poniższym przykładzie przedstawiono metodę GetCertificateState.The following code example shows the GetCertificateState method.

    
    public CertificateState GetCertificateState(bool renew)  
    {  
       return new CertificateState(CertificateStatus.Ready, string.Empty);  
    }  
    
  14. Zapisz i tworzenia rozwiązania.Save and build the solution.

Podpisz zestaw z podpisem Authenticode Sign the assembly with an Authenticode signature

Najpierw należy Authenticode znak zestawu był używany w systemie operacyjnym.You must Authenticode sign the assembly for it to be used in the operating system. Aby uzyskać więcej informacji na temat podpisywania zestawu, zobacz podpisywania i sprawdzanie kodu Authenticode.For more information about signing the assembly, see Signing and Checking Code with Authenticode.

Instalowanie zestawu na komputerze odniesienia Install the assembly on the reference computer

Zestaw umieszczony w folderze na komputerze odniesienia.Place the assembly in a folder on the reference computer. Zanotuj ścieżkę folderu ponieważ przejdzie do rejestru w następnym kroku.Make a note of the folder path because you will enter it into the registry in the next step.

Dodawanie klucza rejestruAdd a key to the registry

Należy dodać wpis rejestru do zdefiniowania właściwości i lokalizacja zestawu.You add a registry entry to define the characteristics and location of the assembly.

Aby dodać klucz rejestruTo add a key to the registry
  1. Na komputerze odniesienia, kliknij przycisk Start, wprowadź regedit, a następnie naciśnij klawisz Enter.On the reference computer, click Start, enter regedit, and then press Enter.

  2. W lewym okienku rozwiń HKEY_LOCAL_MACHINE, rozwiń węzeł oprogramowania, rozwiń węzeł Microsoft, rozwiń węzeł systemu Windows Server, rozwiń węzeł menedżerów domeny, a następnie rozwiń węzeł dostawców.In the left pane, expand HKEY_LOCAL_MACHINE, expand SOFTWARE, expand Microsoft, expand Windows Server, expand Domain Managers, and then expand Providers.

  3. Kliknij prawym przyciskiem myszy dostawców, wskaż nowy, a następnie kliknij przycisk klucza.Right-click Providers, point to New, and then click Key.

  4. Wpisz identyfikator dostawcy jako nazwę klucza.Type the identifier for the provider as the name for the key. Jest to identyfikator GUID zdefiniowany przez dostawcę w kroku 8 dodać implementację interfejsu IDomainSignupProvider do zestawu.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. Kliknij prawym przyciskiem myszy klucz, który został właśnie utworzony, a następnie kliknij przycisk wartość ciągu.Right-click the key that you just created, and then click String Value.

  6. Typ zestawu nazwę ciągu, a następnie naciśnij klawisz Enter.Type Assembly for the name of the string, and then press Enter.

  7. Kliknij prawym przyciskiem myszy nowy zestawu ciąg w okienku po prawej stronie, a następnie kliknij przycisk Modyfikuj.Right-click the new Assembly string in the right pane, and then click Modify.

  8. Wpisz pełną ścieżkę do pliku zestawu, który wcześniej utworzony, a następnie kliknij przycisk OK.Type the full path to the assembly file that you previously created, and then click OK.

  9. Ponownie kliknij prawym przyciskiem myszy klucz, a następnie kliknij przycisk wartość ciągu.Right-click the key again, and then click String Value.

  10. Typ włączone nazwę ciągu, a następnie naciśnij klawisz Enter.Type Enabled for the name of the string, and then press Enter.

  11. Kliknij prawym przyciskiem myszy nowy włączone ciąg w okienku po prawej stronie, a następnie kliknij przycisk Modyfikuj.Right-click the new Enabled string in the right pane, and then click Modify.

  12. Typ True, a następnie kliknij przycisk OK.Type True, and then click OK.

  13. Ponownie kliknij prawym przyciskiem myszy klucz, a następnie kliknij przycisk wartość ciągu.Right-click the key again, and then click String Value.

  14. Typ typu nazwę ciągu, a następnie naciśnij klawisz Enter.Type Type for the name of the string, and then press Enter.

  15. Kliknij prawym przyciskiem myszy nowy typu ciąg w okienku po prawej stronie, a następnie kliknij przycisk Modyfikuj.Right-click the new Type string in the right pane, and then click Modify.

  16. Wpisz nazwę klasy pełną dostawcy zdefiniowane w tym zestawie, a następnie kliknij przycisk OK.Type the full class name of your provider defined in the assembly, and then click OK.

Uruchom ponownie usługę Zarządzanie nazwa domeny systemu Windows Server Restart the Windows Server Domain Name Management service

Należy ponownie uruchomić usługę Zarządzanie domeny systemu Windows Server dla dostawcy staną się dostępne dla systemu operacyjnego.You must restart the Windows Server Domain Management service for the provider to become available to the operating system.

Ponownie uruchom usługęRestart the service
  1. Kliknij przycisk Start, typ mmc, a następnie naciśnij klawisz Enter.Click Start, type mmc, and then press Enter.

  2. Jeśli przystawki usługi nie jest wyświetlany w konsoli, dodaj go, wykonując następujące czynności:If the Services snap-in is not listed in the console, add it by completing the following steps:

    1. Kliknij przycisk pliku, a następnie kliknij przycisk Dodaj/Usuń przystawkę.Click File, and then click Add/Remove Snap-in.

    2. W dostępne przystawki listy, kliknij przycisk usług, a następnie kliknij przycisk Dodaj.In the Available snap-ins list, click Services, and then click Add.

    3. W usług okno dialogowe, upewnij się, że komputera lokalnego jest zaznaczone, a następnie kliknij przycisk Zakończ.In the Services dialog box, ensure that local computer is selected, and then click Finish.

    4. Kliknij przycisk OK zamknąć Dodawanie/Usuwanie przystawki okno dialogowe.Click OK to close the Add/Remove snap-ins dialog box.

  3. Kliknij dwukrotnie usług, przewiń w dół i wybierz Zarządzanie domeny systemu Windows Server, a następnie kliknij przycisk ponownie uruchomić usługę.Double-click Services, scroll down and select Windows Server Domain Management, and then click Restart the service.

Zobacz teżSee Also

Tworzenie i dostosowywanie obrazuCreating and Customizing the Image
Dodatkowe dostosowaniaAdditional Customizations
Przygotowywanie do wdrożenia obrazuPreparing the Image for Deployment
Testowanie środowisko klientaTesting the Customer Experience