2015-04-21 12 views
9

Używam System.DirectoryServices.DirectoryEntry do tworzenia użytkownika AD i wszystko działa poprawnie, z wyjątkiem pewnych właściwości specyficznych dla Pulpitu zdalnego.Zmiana właściwości serwera terminali użytkownika ADA za pomocą C#

Exemple:

newUser.Properties["msTSConnectClientDrives"].Value = false; 
newUser.Properties["msTSConnectPrinterDrives"].Value = false; 
newUser.Properties["msTSDefaultToMainPrinter"].Value = false; 

nie rzucać żadnych wyjątków, więc myślę właściwości znajdują się w obiekcie, ale nie mają żadnego wpływu. Kiedy wchodzę do okna właściwości tego użytkownika, w zakładce "Środowisko" te 3 pola wyboru są nadal zaznaczone.

Czy brakuje mi czegoś szczególnego dla tych właściwości?

Dziękuję za pomoc.

EDIT:

Niestety byłem bardzo zajęty, oto przykładowy kod:

private string CreateNewADAccount(string accountName, string accountPassword) 
    { 
     try 
     { 
      PrincipalContext context = new PrincipalContext(ContextType.Domain, "SV-LITE", @"LITE\xxxxxxxx", "yyyyyyyy"); 

      UserPrincipal newUser = new UserPrincipal(context); 
      newUser.SamAccountName = accountName; 
      newUser.UserPrincipalName = accountName; 
      newUser.Name = "LiteUser2015 - " + accountName; 
      newUser.DisplayName = "LiteUser2015 - " + accountName; 
      newUser.SetPassword(accountPassword); 
      newUser.PasswordNeverExpires = true; 
      newUser.UserCannotChangePassword = true; 

      newUser.Save(); 

      // Set advanced properties 
      if (newUser.GetUnderlyingObjectType() == typeof(DirectoryEntry)) 
      { 
       DirectoryEntry entry = (DirectoryEntry)newUser.GetUnderlyingObject(); 

       entry.Properties["msTSConnectClientDrives"].Value = false; 
       entry.Properties["msTSConnectPrinterDrives"].Value = false; 
       entry.Properties["msTSDefaultToMainPrinter"].Value = false; 
       entry.Properties["msTSInitialProgram"].Value = "test"; 

       entry.CommitChanges(); 
      } 

      return newUser.Guid.ToString(); 

     } 
     catch (Exception e) 
     { 
      MessageBox.Show("Failed to create PrincipalContext. Exception: " + e); 
     } 

     return null; 
    } 

Odpowiedz

0

Może to mieć coś wspólnego z wersją serwerową systemu operacyjnego, której używasz. Znalazłem odpowiedź na another site, że rozmowy na temat systemu Windows 2000 i 2003. Powinno to działać dla Windows2008 i powyżej:

na rok 2000/2003 masz do nich dostęp za pomocą usług terminalowych ADSI rozszerzenie. Odesłanie to jest tutaj:

http://msdn.microsoft.com/en-us/library/aa380823(VS.85).aspx

+0

Jestem na Windows 2008 – Karnalta

+0

OK (prawdopodobnie powinienem był zadać w komentarzu). W każdym razie tutaj jest artykuł MSDN mówiąc, że Windows 2008 i wyżej obsługuje go: https://msdn.microsoft.com/en-us/library/cc220553.aspx –

Powiązane problemy