【发布时间】:2010-12-15 20:59:19
【问题描述】:
我正在尝试在未加入域的计算机上添加本地用户帐户。我已经尝试了几乎所有我能想到的东西。我在同一个域中的机器上工作,但不在域外机器上。我可以 ping 和 TS 到此服务器,但似乎无法添加管理员。
是否可以使用 DirectoryEntry 来执行此操作?
这是我目前拥有的代码(为了便于阅读,稍作改动):
private string AddLocalAdmin_NonDomain(string ComputerName)
{
StartImpersonation(); //Uses advapi32.dll->LogonUser()
string ErrMsg = "";
const int ADS_UF_DONT_EXPIRE_PASSWD = 0x10000;
DirectoryEntry AD = new DirectoryEntry("WinNT://" + ComputerName + ",computer", ComputerName + "\\" + UserCredentials.Username, UserCredentials.Password);
object n = AD.NativeObject;
DirectoryEntry NewUser = AD.Children.Add(Username, "user");
NewUser.Invoke("SetPassword", new object[] { Password });
if (!PasswordExpires)
{
int val = ADS_UF_DONT_EXPIRE_PASSWD;
NewUser.InvokeSet("userFlags", new object[] { val });
}
NewUser.CommitChanges();
DirectoryEntry grp;
grp = AD.Children.Find("Administrators", "group");
if (grp != null) { grp.Invoke("Add", new object[] { NewUser.Path.ToString() }); }
EndImpersonation(); //Ends the impersonation
return ErrMsg; //returns "Access Denied"
}
【问题讨论】:
标签: c# active-directory