我已阅读AD中的以下属性,
TerminalServicesProfilePath
TerminalServicesHomeDirectory
TerminalServicesHomeDrive
我尝试过DirectoryEntry和DirectorySearcher。但它们不包括属性。
我在vbscript和VC中找到了一些例子来读取它们。 但是我没能在C#中工作。我错过了一些棘手的事情吗?
编辑:我必须在“Windows Server”上运行才能使其正常运行吗?可以从win XP中读取吗?答案 0 :(得分: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");
}
}
答案 1 :(得分:1)
我不记得确切,但它是这样的:
//user is a DirectoryEntry
IADsTSUserEx adsiUser = (IADsTSUserEx)user.NativeObject;
然后您可以通过adsiUser获取所需的TerminalServices属性。
根据我的经验,由于您使用的库,您最好在可以访问AD的Windows Server上进行开发。那你也可能会做上面的工作:)
答案 2 :(得分: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;