所以,有几个这样的帖子有点“老了”但我现在才碰到这个并且无法获得这些属性。
基本上我需要的是能够访问Active Directory中的“远程桌面服务用户配置文件路径”。我已经尝试了几个在线的东西,包括用于powershell的ADSI,但是“TerminalServicesHomeDirectory”attritube或者属性,无论你想要什么,它都没有回来。我也尝试了以下代码,它应该能够设置它。这也不起作用。
PrincipalContext PC = new PrincipalContext(ContextType.Domain);
UserPrincipal UP = UserPrincipal.FindByIdentity(PC, "testact");
DirectoryEntry DE = (DirectoryEntry)UP.GetUnderlyingObject();
DE.InvokeSet("TerminalServicesHomeDirectory", new object[] { "testing" });
DE.CommitChanges();
我知道我在某处读过您应该使用“tsuserex.dll”但是我没有成功将其添加为参考。我在我的机器上找到了其中两个,一个在system32中列出,一个在“c:\ Windows \ WinSxS \ amd64 .......”但是它们都没有加载。他们只是生成错误
"a reference to $pathhere\tsuserex.dll could not be added. please make sure
the file is accessible, and that it is a valid assembly or COM component."
我几乎在互联网上搜索过,所以现在我希望所有强大的SO都能来救我。顺便说一下,我在64位Windows 10机器上。
答案 0 :(得分:0)
原来我的解决方案是正确的,它只是花了一点时间来更新我猜。
PrincipalContext PC = new PrincipalContext(ContextType.Domain);
UserPrincipal UP = UserPrincipal.FindByIdentity(PC, "testact");
DirectoryEntry DE = (DirectoryEntry)UP.GetUnderlyingObject();
//To Change the value
DE.InvokeSet("TerminalServicesHomeDirectory", new object[] { "testing" });
DE.CommitChanges();
//to get the value
string value = DE.InvokeGet("TerminalServicesHomeDirectory");
这是获取或更改这些值所需的所有代码。您也可以使用TerminalServicesProfilePath属性执行此操作。