1

ターミナルサービスの設定をプログラムで変更しようとしています。tsuserex.dllを使用する必要があることを学びました。C#であるため、tsuserexをtlbimpで実行し、TSUSEREXLib.dllを作成して、regasmに登録しました。私はそれを機能させ、コンセプトの教授としてそれを使ってフレームワークプログラムを書きました。しかし、今日、プログラムを実行するときにいくつかの変更を加えた後、エラーが発生します

タイプ「System.__ComObject」のCOMオブジェクトをインターフェースタイプ「TSUSEREXLib.IADsTSUserEx」にキャストできません。IID'{C4930E79-2989-4462-8A60-2FCF2F2955EF}'のインターフェイスのCOMコンポーネントに対するQueryInterface呼び出しが、次のエラーのために失敗したため、この操作は失敗しました:そのようなインターフェイスはサポートされていません(HRESULTからの例外:0x80004002(E_NOINTERFACE)) 。

それは行の例外をどうやって

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

この正確な線は、テストプロジェクトで正常に機能しました。ユーザーが有効なUserPrincipalであることはわかっていますが、Googleは通常、dllを再登録するだけでよいことがわかりましたが、アンロードしてリロードした後でも機能しません。dllが機能しなくなる原因となるものがありません。

4

4 に答える 4

3

これは古いスレッドですが、最近、ターミナルサービスコンポーネントをWindows 7で動作させるために必要なすべての手順を見つけるのに苦労したので、見つけたものを共有したいと思いました。以下の手順は、サーバーからtsuserex.dllをコピーして登録するよりも信頼性が高いと思います。

私の理解では、どのオペレーティングシステムでも、ユーザーアカウントのターミナルサービス属性をプログラムで変更するには、リモートサーバー管理ツール(RSAT)をインストールする必要があります。一部のバージョンのWindowsでは、これをダウンロードする必要があります。ただし、Windows 7では、RSATは既にインストールされています。

ただし、コントロールパネル(appwiz.cpl)の構成オプションを使用して有効にする必要がある場合があります。[Windowsの機能をオンまたはオフにする]で[リモートサーバー管理ツール]に移動し、[リモートデスクトップサービスツール]がオンになっていることを確認します。

これを実行(および再起動)した後、PowerShellを介してtsuserex.dllのコンポーネント(例:Set-QADUser -Identity testUser -TsHomeDirectory "c:\ tshome")を使用し、Visual Studio 2010で参照を追加することができました( 「tsexusrm1.0タイプライブラリ」へ)。

于 2012-02-08T16:49:54.280 に答える
0

ほぼ確実に、ターゲットマシンにTLBを再登録する必要があります。発生する可能性が高いのは、アセンブリ、インターフェイス、またはタイプGUIDがアプリケーションにハードコーディングされていないため、再構築のたびに変更されることです。したがって、再構築してデプロイした後、タイプは以前に登録されたTLBと一致しなくなります。

于 2010-01-15T21:13:17.750 に答える
0

正解は、ビルド環境が変更されたことを気にしないのはばかだということです。プロジェクトを開始したとき、サーバー2003ではなくWindows7Corprateである新しいワークステーションに移動しました。Win7 corpのシステムには、tsuserex.dllがありません。

于 2010-01-17T01:42:03.773 に答える
0

VisualStudioのビルド設定「プラットフォームターゲット」disable=>「32ビットを優先」で問題を解決します。

于 2013-09-12T11:00:34.927 に答える