Como ler TermainsServices IADsTSUserEx Propriedade de LDAP em C #?

votos
2

Eu li as seguintes propriedades de AD,

TerminalServicesProfilePath
TerminalServicesHomeDirectory
TerminalServicesHomeDrive

Eu tentei DirectoryEntry e DirectorySearcher. Mas eles não incluem as propriedades.

Eu encontrei alguns exemplo em VBScript e VC para lê-los. No entanto, eu não para torná-lo trabalhando em C #. Estou faltando alguma coisa complicada?

EDIT: Eu sou tem que executá-lo em Windows Server para fazer ele funciona? ele pode ser lido a partir vitória XP?

Publicado 10/12/2008 em 10:19
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

Eu acho que você pode usar o InvokeGetmétodo na sua DirectoryEntry, passando o nome da propriedade que deseja ler.

2008-12-10 11:50 CET - Editado em resposta ao comentário

Se eu especificar um nome de propriedade de lixo, eu recebo a mesma exceção COM. Tem certeza as propriedades que você está tentando recuperar são parte do esquema AD?

Só para ter certeza, o código que estou usando é a seguinte:

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");
    }
}
Respondeu 10/12/2008 em 10:52
fonte usuário

votos
1

Isso funciona para mim:

            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;
Respondeu 08/10/2009 em 17:12
fonte usuário

votos
1

Não me lembro exatamente, mas é algo como isto:

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

então você pode obter as propriedades TerminalServices você quer via adsiUser.

Da minha experiência é melhor desenvolver em um Windows Server com acesso a AD devido às bibliotecas que você usa. Então você provavelmente vai fazer o trabalho acima, também :)

Respondeu 10/12/2008 em 10:33
fonte usuário

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