首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中从LDAP中读取TermainsServices IADsTSUserEx属性?

如何在C#中从LDAP中读取TermainsServices IADsTSUserEx属性?
EN

Stack Overflow用户
提问于 2008-12-10 09:19:22
回答 3查看 4.8K关注 0票数 2

我已经从AD读取了以下属性,

代码语言:javascript
复制
TerminalServicesProfilePath
TerminalServicesHomeDirectory
TerminalServicesHomeDrive

我试过DirectoryEntry和DirectorySearcher。但它们不包括属性。

我在vbscript和VC中找到了一些例子来阅读它们。然而,我没能让它在C#中工作。我是不是漏掉了什么棘手的东西?

编辑:我必须在"Windows Server“上运行它才能工作吗?它可以从win XP中读取吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-12-10 09:33:24

我记不太清了,但大概是这样的:

代码语言:javascript
复制
//user is a DirectoryEntry
IADsTSUserEx adsiUser = (IADsTSUserEx)user.NativeObject; 

然后,您可以通过adsiUser获取所需的TerminalServices属性。

根据我的经验,由于您所使用的库,您最好在可以访问AD的Windows服务器上进行开发。然后,您可能也会让上面的代码工作:)

票数 1
EN

Stack Overflow用户

发布于 2008-12-10 09:52:02

我认为您可以在DirectoryEntry上使用InvokeGet方法,传入要读取的属性的名称。

2008-12-10 11:50 CET -针对评论进行编辑

如果指定垃圾属性名称,则会得到相同的COM异常。是否确定您尝试检索的属性是AD架构的一部分?

为了确保,我使用的代码如下所示:

代码语言:javascript
复制
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");
    }
}
票数 3
EN

Stack Overflow用户

发布于 2009-10-08 16:12:36

这对我来说很有效:

代码语言:javascript
复制
            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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/355492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档