1

我使用的目录同步获得已在Active Directory(更新日志)更改的属性值。 以下链接解释了目录同步是如何用来获取属性值:如何获得在Active Directory中的终端服务属性值从userParameters属性

http://blogs.technet.com/b/isrpfeplat/archive/2010/09/20/using-the-dirsync-control.aspx

我改变下一个用户的远程桌面服务配置文件的属性本地路径。我运行了一个客户端,它使用目录同步来获取AD中已更改的对象。 在客户端被改变的属性是userParameters,值是加密形式。

CtxCfgPresent         P☺CtxCfgPresent???? ☻☺CtxWFProfi 
lePath?↑→☺CtxWFHomeDir?????????????"☻☺CtxWFHomeDirDrive?☺CtxShadow????☺CtxMaxDis 
connectionTime????☺CtxMaxConnectionTime????☺CtxMaxIdleTime???? ☻☺CtxWorkDirector 
y?☺CtxCfgFlags1????"☻☺CtxInitialProgram? 

有没有办法从userParameters获取实际值。

回答

3

方法1:解析自己:)

的信息的结构在[MS-TSTS]规范中描述:

http://msdn.microsoft.com/en-us/library/ff635189.aspx

方法2:IADsTSUserEx接口

例如,在C#:

IADsTSUserEx的

定义是这样的:
(我只需要阅读在我的项目的信息,所以只有吸气但没有setter)

[ 
ComImport, 
InterfaceType(ComInterfaceType.InterfaceIsIDispatch), 
Guid("C4930E79-2989-4462-8A60-2FCF2F2955EF") 
] 
private interface IADsTSUserEx 
{ 
    string TerminalServicesProfilePath { get;} 
    string TerminalServicesHomeDirectory { get;} 
    string TerminalServicesHomeDrive { get;} 
    bool AllowLogon { get;} 
    long EnableRemoteControl { get;} 
    long MaxDisconnectionTime { get;} 
    long MaxConnectionTime { get;} 
    long MaxIdleTime { get;} 
    int ReconnectionAction { get;} 
    int BrokenConnectionAction { get;} 
    bool ConnectClientDrivesAtLogon { get;} 
    bool ConnectClientPrintersAtLogon { get;} 
    bool DefaultToMainPrinter { get;} 
    string TerminalServicesWorkDirectory { get;} 
    string TerminalServicesInitialProgram { get;} 
} 

您也可以使用其他脚本语言,这将比C#更简单。

的VBScript:

http://www.wisesoft.co.uk/scripts/vbscript_read-write_terminal_services_settings.aspx

的PowerShell:

http://blogs.technet.com/b/heyscriptingguy/archive/2008/10/23/how-can-i-edit-terminal-server-profiles-for-users-in-active-directory.aspx