2

ADから次のプロパティを読みました。

TerminalServicesProfilePath
TerminalServicesHomeDirectory
TerminalServicesHomeDrive

DirectoryEntryとDirectorySearcherを試しました。ただし、プロパティは含まれていません。

私はそれらを読むためにvbscriptとVCでいくつかの例を見つけました。しかし、C#で動作させることができませんでした。トリッキーなものが欠けていますか?

編集:それを機能させるには、「WindowsServer」で実行する必要がありますか?Win XPから読み取ることはできますか?

4

3 に答える 3

3

読みたいプロパティの名前を渡して、でInvokeGetメソッドを使用できると思います。DirectoryEntry

2008-12-10 11:50 CET —コメントに応じて編集

ガベージプロパティ名を指定すると、同じCOM例外が発生します。取得しようとしているプロパティがADスキーマの一部であると確信していますか?

念のため、使用しているコードは次のとおりです。

using (DirectorySearcher searcher = new DirectorySearcher("(cn=Test)"))
{
    SearchResult result = searcher.FindOne();
    if (result != null)
    {
        DirectoryEntry entry = result.GetDirectoryEntry();
        string s = entry.InvokeGet("TerminalServicesHomeDrive") as string;
        MessageBox.Show(s ?? "null");
    }
}
于 2008-12-10T09:52:02.037 に答える
1

正確には覚えていませんが、次のようなものです。

//user is a DirectoryEntry
IADsTSUserEx adsiUser = (IADsTSUserEx)user.NativeObject; 

次に、adsiUserを介して必要なTerminalServicesプロパティを取得できます。

私の経験から、使用するライブラリがあるため、ADにアクセスできるWindowsServerで開発する方がよいでしょう。次に、おそらく上記の作業も行います:)

于 2008-12-10T09:33:23.617 に答える
1

これは私のために働く:

            DirectoryEntry user = new DirectoryEntry("LDAP://" + sLDAP_SERVER + "/cn=" + SAMAccount + "," + sLdapFullPath, sUser, sPwd);

            //ActiveDs.IADsUser iADsUser = (ActiveDs.IADsUser)user.NativeObject;
            ActiveDs.IADsUser cont = null;

            cont = user.NativeObject as ActiveDs.IADsUser;

            TSUSEREXLib.IADsTSUserEx m_TsUser = (TSUSEREXLib.IADsTSUserEx)cont;
            int m_TSLogonDisabled = 0;

            m_TsUser.AllowLogon = m_TSLogonDisabled;
于 2009-10-08T16:12:36.063 に答える