最近需要编写代码加入计算机账号到域,也就是active directory,但是加入计算机账号以后,账号默认是禁用的,用了一天时间才搞明白怎样使账户启用。
代码如下:
string
path
=
""
;
//
域服务器url
string userName = "" ; // 用户名
string pwd = "" ; // 密码
string name = " myNode " ; // 父节点
string computerName = " com1 " ; // 计算机名
DirectoryEntry entry = new DirectoryEntry(path + " ou= " + name,userName,pwd);
DirectoryEntry de = entry.Children.Add( " CN= " + computerName, " computer " );
de.Properties[ " sAMAccountName " ].Value = computerName;
de.CommitChanges();
// 直接设置属性也是可以的,但是这样的话,就是硬编码了,所以先执行CommitChanges,然后再设置userAccountControl的值会更好一些。
// enable account
const int ADS_UF_ACCOUNTDISABLE = 0x0002 ;
int val = ( int )de.Properties[ " userAccountControl " ].Value;
de.Properties[ " userAccountControl " ].Value = val & ( ~ ADS_UF_ACCOUNTDISABLE);
de.CommitChanges();
string userName = "" ; // 用户名
string pwd = "" ; // 密码
string name = " myNode " ; // 父节点
string computerName = " com1 " ; // 计算机名
DirectoryEntry entry = new DirectoryEntry(path + " ou= " + name,userName,pwd);
DirectoryEntry de = entry.Children.Add( " CN= " + computerName, " computer " );
de.Properties[ " sAMAccountName " ].Value = computerName;
de.CommitChanges();
// 直接设置属性也是可以的,但是这样的话,就是硬编码了,所以先执行CommitChanges,然后再设置userAccountControl的值会更好一些。
// enable account
const int ADS_UF_ACCOUNTDISABLE = 0x0002 ;
int val = ( int )de.Properties[ " userAccountControl " ].Value;
de.Properties[ " userAccountControl " ].Value = val & ( ~ ADS_UF_ACCOUNTDISABLE);
de.CommitChanges();
这样,计算机账户就是在启用状态了:)