Frage

Ich versuche, die Terminaldienste-Einstellungen programmaticly zu ändern. ich gelernt, dass man verwenden muss tsuserex.dll . Da c # lief ich durch tlbimp tsuserex und erstellt TSUSEREXLib.dll dann registriert es mit regasm. Ich habe es funktioniert und ein Rahmenprogramm mit ihm als prof-of-Concept geschrieben. Doch heute, nachdem ich einige Änderungen vorgenommen, wenn ich mein Programm, das ich den Fehler ausführen

Kann nicht Guss COM-Objekt des Typs 'System .__ ComObject' to Interface-Typ 'TSUSEREXLib.IADsTSUserEx'. Dieser Vorgang fehlgeschlagen, da der Interface-Aufruf auf der COM-Komponente für die Schnittstelle mit IID ‚{} C4930E79-2989-4462-8A60-2FCF2F2955EF‘ konnte aufgrund des folgenden Fehlers: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)) .

es thows die Ausnahme auf der Linie

IADsTSUserEx iad = (IADsTSUserEx)((DirectoryEntry)user.GetUnderlyingObject()).NativeObject;

Diese exakte Linie funktionierte gut in dem Testprojekt. Ich weiß, dass Benutzer ein gültiger Userprincipal ist, fand googleing ich dies ist in der Regel braucht nur die DLL neu registriert, aber auch nach dem Entladen und Neuladen es es immer noch nicht funktionieren. Was bin ich dabei meine dll aufhören zu arbeiten, um zu bewirken.

War es hilfreich?

Lösung

Ich weiß, dass dies ein alter Thread ist aber da ich Schwierigkeiten hatte vor kurzem alle notwendigen Schritte zu finden, um die Terminaldienste-Komponenten zu erhalten arbeiten an Windows 7, wollte ich teilen, was ich gefunden habe. Ich denke, die Schritte unten zuverlässiger sind als die tsuserex.dll von einem Server zu kopieren und zu versuchen, sie zu registrieren.

Von dem, was ich verstehe, auf jedem Betriebssystem benötigen Sie Remote Server Administration Tools (RSAT) installiert, um die Terminaldienste ändern Attribute eines Benutzerkontos programmatisch. Bei einigen Versionen von Windows erfordert dies einen Download. Aber auf Windows 7 ist RSAT bereits installiert ist.

Aber man kann es ermöglichen, müssen die Konfigurationsoptionen in der Systemsteuerung (appwiz.cpl) verwenden. Unter "Windows-Funktionen ein- oder ausschalten" goto "Remote Server Administration Tools" und dann sicherstellen, dass die "Remote Desktop Services Tools" aktiviert ist.

Nachdem ich dies tat (und neu gestartet) ich in der Lage war, die Komponenten von tsuserex.dll über Powershell zu verwenden (zB Set-QADUser -Identity Testuser -TsHomeDirectory „c: \ tshome“) und durch in Visual eine Referenz hinzugefügt Studio 2010 (auf "tsexusrm 1.0 Type Library").

Andere Tipps

Sie müssen an Sicherheit grenzender Wahrscheinlichkeit erneut registrieren Ihre TLB auf dem Zielcomputer. Was wahrscheinlich passiert ist, haben Sie Ihre Montage-Schnittstelle oder Typ GUID nicht schwer in der Anwendung codiert und somit ist es verändert auf jeder wieder aufzubauen. So nach dem Umbau und der Bereitstellung Ihrer Art nicht mehr übereinstimmt mit dem zuvor registrierten TLB auf.

Die richtige Antwort ist, dass ich bin ein Idiot für nicht reliseing, dass meine Build-Umgebung geändert hat. Ich zog nach einem neuen workstaion, die windows 7 corprate statt Server 2003 war, als ich auf das Projekt gestartet. Win7 corp hat nicht in seinem System tsuserex.dll.

Visual Studio Build-Einstellung „Platform target“ disable => „Bevorzugen 32-Bit“ löst das Problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top