如何以编程方式访问远程桌面服务用户配置文件路径?

时间:2017-07-21 17:32:19

标签: c# powershell active-directory windows-10 windows-server-2008-r2

所以,有几个这样的帖子有点“老了”但我现在才碰到这个并且无法获得这些属性。

基本上我需要的是能够访问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机器上。

1 个答案:

答案 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属性执行此操作。