我已经从AD读取了以下属性,
TerminalServicesProfilePath
TerminalServicesHomeDirectory
TerminalServicesHomeDrive我试过DirectoryEntry和DirectorySearcher。但它们不包括属性。
我在vbscript和VC中找到了一些例子来阅读它们。然而,我没能让它在C#中工作。我是不是漏掉了什么棘手的东西?
编辑:我必须在"Windows Server“上运行它才能工作吗?它可以从win XP中读取吗?
发布于 2008-12-10 09:33:24
我记不太清了,但大概是这样的:
//user is a DirectoryEntry
IADsTSUserEx adsiUser = (IADsTSUserEx)user.NativeObject; 然后,您可以通过adsiUser获取所需的TerminalServices属性。
根据我的经验,由于您所使用的库,您最好在可以访问AD的Windows服务器上进行开发。然后,您可能也会让上面的代码工作:)
发布于 2008-12-10 09:52:02
我认为您可以在DirectoryEntry上使用InvokeGet方法,传入要读取的属性的名称。
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");
}
}发布于 2009-10-08 16:12:36
这对我来说很有效:
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;https://stackoverflow.com/questions/355492
复制相似问题