[C#] Wijzigen Terminal Server attributen Active Directory

Pagina: 1
Acties:

  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
Ik ben bezig met een programma waarmee ik attributen wil wijzigen van Active Directory gebruikers.

Ik wil eigelijk specifiek de attributen voor Terminal Server wijzigen. Helaas zitten deze attributen samengevoegd in een enkel AD attribuut UserParameters en deze is volgens mij niet zomaar te lezen.

Ik ben op zoek gegaan op internet en ik heb het volgende gevonden:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/termserv/TermServ/iadstsuserex.asp

Maar ik krijg het niet voor elkaar in C#, ik kan wel een referentie leggen naar de DLL waar deze inzit TsUserEx.dll maar dan weet ik niet precies hoe ik hier mee moet werken.

Kan iemand mij hiermee helpen.

Ik gebruik Windows Server 2003 met Visual Studio 2003

Verwijderd

Je moet het in de hoek van WMI zoeken.

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Je kan alleen de TS-attributes van een user wijzigen op een Windows 2003 Server. Maar je geeft al aan dat te doen. En WMI is helemaal niet van belang in dit verhaal.

De TS-attributes die je dan kan benaderen zijn bijvoorbeeld:
AllowLogon, HomeDir, HomeDrive, ProfilePath, EnabledRemoteControl, MaxConnTime, MAxDisconnTime, MaxIdleTime, Workdir, etc.

Maar wat lukt nu precies niet?

  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
Sorry ben de afgelopen dagen ziek geweest, dus heb geen tijd meer gehad om te reageren.

@robertpNL, hoe benader jij deze attributen dan? In het Active Directory schema AFAIK zitten alle TS attributen samengevoegd in het userparameter attribuut.

De attributen die jij beschrijft die worden volgens mij aangeboden door die DLL toch?

[ Voor 7% gewijzigd door dominion99 op 13-02-2005 14:55 ]


  • dominion99
  • Registratie: December 2001
  • Laatst online: 13-08-2025
Ik heb het nu wel voor elkaar, alleen met Visual Basic.NET. Ik krijg het met C# niet voor elkaar, die zit schijnbaar iets stricter in elkaar.

Ik heb een referentie gelegd naar de dll tsuserex.dll (te vinden op een Win2003 server).
Ik gebruik de security context waaronder de service draait die deze code gebruikt.

Het probleem zit hem in de SetInfo() functie, hij is niet aanwezig in het ADsTSUserEx object, Visual Basic vindt dat geen probleem maar C# wil helaas niet compilen.

Is dit gewoon iets wat niet werkt in C# of is er een workarround?

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ADsTSUserEx UserObject;
Object TmpObject;

try
{
    TmpObject = new DirectoryEntry("LDAP://CN=871273,OU=Medewerkeraccounts,
                    DC=Medewerker,DC=springfield,DC=local",null,null,
                    System.DirectoryServices.AuthenticationTypes.Secure)
                    .NativeObject;

    UserObject = (TSUSEREXLib.ADsTSUserEx)TmpObject;
    UserObject.TerminalServicesHomeDirectory = @"\\Testing\Terminal";
    UserObject.SetInfo();
}
catch (Exception err)
{
    MessageBox.Show(err.Message);
}

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim UserObject As TSUSEREXLib.ADsTSUserEx
Dim TmpObject As Object

Try

    TmpObject = New DirectoryEntry("LDAP://CN=871273,OU=Medewerkeraccounts,
            DC=Medewerker,DC=springfield,DC=local",Nothing,Nothing, 
            System.DirectoryServices.AuthenticationTypes.Secure)
            .NativeObject
    
    UserObject = CType(TmpObject, TSUSEREXLib.ADsTSUserEx)
    UserObject.TerminalServicesHomeDirectory = "\\Testing\Terminal"
    UserObject.SetInfo()
    
Catch err As Exception
    MessageBox.Show(err.Message)
End Try

[ Voor 7% gewijzigd door dominion99 op 16-02-2005 16:15 ]


  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
EDIT / nee toch niet...

* Mischa_NL moet leren lezen...

[ Voor 122% gewijzigd door Mischa_NL op 16-02-2005 16:54 ]

Pagina: 1