Как прочитать свойство IADsTSUserEx TermainsServices из LDAP в C #? - PullRequest
2 голосов
/ 10 декабря 2008

Я прочитал следующие свойства из AD,

TerminalServicesProfilePath
TerminalServicesHomeDirectory
TerminalServicesHomeDrive

Я пробовал DirectoryEntry и DirectorySearcher. Но они не включают в себя свойства.

Я нашел несколько примеров в vbscript и VC, чтобы прочитать их. Однако мне не удалось заставить его работать в C #. Я скучаю по какой-то хитрой вещице?

РЕДАКТИРОВАТЬ: я должен запустить его на "Windows Server", чтобы он работал? Можно ли его прочитать из win XP?

Ответы [ 3 ]

2 голосов
/ 10 декабря 2008

Я думаю, что вы можете использовать метод InvokeGet на вашем DirectoryEntry, передавая имя свойства, которое вы хотите прочитать.

2008-12-10 11:50 CET & mdash; Отредактировано в ответ на комментарий

Если указать имя свойства мусора, я получу то же исключение 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");
    }
}
1 голос
/ 08 октября 2009

Это работает для меня:

            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;
1 голос
/ 10 декабря 2008

Точно не помню, но примерно так:

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

тогда вы можете получить нужные вам свойства TerminalServices через adsiUser.

Исходя из моего опыта, вам лучше разрабатывать на Windows Server с доступом к AD из-за используемых вами библиотек. Тогда вы, вероятно, тоже сделаете вышеприведенную работу:)

...