Как читать TermainsServices IADsTSUserEx собственности из LDAP в C #?

голоса
2

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

TerminalServicesProfilePath
TerminalServicesHomeDirectory
TerminalServicesHomeDrive

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

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

EDIT: Я должен запустить его на «Windows Server», чтобы сделать это работает? Может ли это быть считаны с Win XP?

Задан 10/12/2008 в 10:19
источник пользователем
На других языках...                            


3 ответов

голоса
2

Я думаю , вы можете использовать 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");
    }
}
Ответил 10/12/2008 в 10:52
источник пользователем

голоса
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;
Ответил 08/10/2009 в 17:12
источник пользователем

голоса
1

Я не помню точно, но это что-то вроде этого:

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

то вы можете получить TerminalServices свойства, которые вы хотите с помощью adsiUser.

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

Ответил 10/12/2008 в 10:33
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more