Active Directory Access to "TerminalServicesProfilePath"

Aug 7 2008 5:48 AM
Hello guys!

I am trying to access to User-Properties from my C#-Programm.
It is no problem to set "Sirname", "Mail", "scriptPath", "HomeDirectory" and so on.

But I have problems with the "TerminalServices"-Attributes like "TerminalServicesProfilePath".

First time I tried it like that:

DirectoryEntry entry = new DirectoryEntry("LDAP://OU=Users,DC=COMPANY,DC=COM");DirectoryEntries entries = entry.Children;
entry = entries.Add(
"CN=" + textBox_name.Text, "user");

entry.Properties["TerminalServicesProfilePath"].Value = textBox_TerminalServiceProfil.Text;

But I read that I can't access to this attribute in that way.

Then I heard about ActiveDs.dll and TSUSEREXLib.dll. I got these 2 dll-Files and set a reference to them.
Now my code looks like that:


DirectoryEntry entry1 = new DirectoryEntry("path to user"); 
ActiveDs.IADsUser iADsUser1 = (ActiveDs.IADsUser)entry1.NativeObject; 
TSUSEREXLib.IADsTSUserEx m_TsUser = (TSUSEREXLib.IADsTSUserEx)iADsUser1; 
m_TsUser.TerminalServicesProfilePath = path1; 
entry1.CommitChanges(); 

But now my programm throws an exception:

System.InvalidCastException: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "TSUSEREXLib.IADsTSUserEx" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{C4930E79-2989-4462-8A60-2FCF2F2955EF}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).

in english:
System.InvalidCastException: The COM-Object of the type "System.__ComObject" cannot be casted to the interface type "TSUSEREXLib.IADsTSUserEx". This process could not be performed because the QueryInterface-call to the COM-component for the inteface with the IID "{C4930E79-2989-4462-8A60-2FCF2F2955EF}" could not be performed because of the following error: interface not provided (Exception HRESULT: 0x80004002 (E_NOINTERFACE)).

I also tried it only with:
TSUSEREXLib.IADsTSUserEx m_TsUser = (TSUSEREXLib.IADsTSUserEx)entry1.NativeObject;

But the Programm got the same error again.
 

I am working with Windows 2k and the Visual Studio 2005.

I hope you can help me.

Greetings
Manuel

Answers (2)