通过System.DirectoryServices管理终端用户

时间:2010-01-04 16:24:23

标签: c# active-directory directoryservices terminal-services

我有一个环境,我需要经常将参数更改为用户登录终端服务器时启动的程序。截至目前,我们打开计算机管理管理单元并编辑用户的环境选项卡,并在“登录时启动以下程序:”下手动更改参数。我想自动化这个过程。

我一直在寻找System.DirectoryServices和System.DirectoryServices.AccountManagement,并尽我所能阅读它。到目前为止,我最好的猜测是我需要编辑的信息存储在“参数”属性中(对于属性可能是最糟糕的名称,废话搜索)。猜测的原因是我列出了我得到的所有属性

(...)
Name: HomeDirDrive
Value:
Name: Parameters
Value:                                                 P☺CtxCfgPresent????☺CtxCf
gFlags1????☺CtxShadow????*☻☺CtxMinEncryptionLevel? @☺CtxWorkDirectory???????????
?????????????????????"C☺CtxInitialProgram???????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
???????????????
Name: PrimaryGroupID
Value: 513
(...)

CtxInitialProgram和CtxWorkDirectory似乎与我正在使用的内容相关。

现在我陷入困境,因为我无法弄清楚如何,或找到和资源来帮助我,正确地读取和写入值。

非常感谢任何帮助。

编辑 -  我在互联网上的其他地方找到了这个答案 在互联网上的其他地方问我找到了答案:

不幸的是,这些数据是以专有格式编码的。以编程方式管理它的唯一受支持的方法是使用终端服务附带的IADsTSUserEx ADSI接口。您基本上只是将NativeObject属性强制转换为此COM接口(在创建所需的COM引用之后),然后访问该接口公开的属性。

现在我的问题是如何设置COM引用,我之前从未做过类似的事情。

1 个答案:

答案 0 :(得分:2)

在互联网上的其他地方问我找到了答案:

不幸的是,这些数据是以专有格式编码的。以编程方式管理它的唯一受支持的方法是使用终端服务附带的IADsTSUserEx ADSI接口。您基本上只是将NativeObject属性强制转换为此COM接口(在创建所需的COM引用之后),然后访问该接口公开的属性。