如何从 userParameters 属性获取 Active Directory 中的终端服务属性值
How to get terminal services property values in Active Directory from userParameters attribute
我正在使用目录同步来获取在 Active Directory (changelog) 中已更改的属性值。
以下link解释了如何使用目录同步获取属性值:
'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?
有没有办法从用户参数中获取实际值。
方法一:自己解析:)
[MS-TSTS] 规范中描述了信息的结构:
http://msdn.microsoft.com/en-us/library/ff635189.aspx
方法二:IADsTSUserEx接口
例如,在 C# 中:
DirectoryEntry userEntry = new DirectoryEntry("LDAP://domain.com/CN=user1,CN=Users,DC=domain,DC=com", "user", "pwd")
IADsTSUserEx tsUser = userEntry.NativeObject as IADsTSUserEx;
IADsTSUserEx 的定义是这样的:
(我只需要阅读我项目中的信息,所以只有 getter 而没有 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:
我正在使用目录同步来获取在 Active Directory (changelog) 中已更改的属性值。 以下link解释了如何使用目录同步获取属性值:
'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?
有没有办法从用户参数中获取实际值。
方法一:自己解析:)
[MS-TSTS] 规范中描述了信息的结构:
http://msdn.microsoft.com/en-us/library/ff635189.aspx
方法二:IADsTSUserEx接口
例如,在 C# 中:
DirectoryEntry userEntry = new DirectoryEntry("LDAP://domain.com/CN=user1,CN=Users,DC=domain,DC=com", "user", "pwd")
IADsTSUserEx tsUser = userEntry.NativeObject as IADsTSUserEx;
IADsTSUserEx 的定义是这样的:
(我只需要阅读我项目中的信息,所以只有 getter 而没有 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: