2

我已阅读 AD 的以下属性,

TerminalServicesProfilePath
TerminalServicesHomeDirectory
TerminalServicesHomeDrive

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

我在 vbscript 和 VC 中找到了一些示例来阅读它们。但是我未能使其在 C# 中工作。我错过了一些棘手的事情吗?

编辑:我必须在“Windows Server”上运行它才能使其工作吗?可以从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 的 Windows Server 上进行开发。那么你可能也会完成上述工作:)

于 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 回答