2
我已經編寫了一個程序,它打開與遠程Windows服務器的連接以管理本地帳戶(不是活動目錄)。該程序執行以下步驟:使用C#的遠程Windows服務器上的用戶管理System.DirectoryServices
- 用戶創建
- 將用戶添加到組
兩種方法都使用System.DirectoryServices.AccountManagement, 這裏的兩個功能:
public void CreateUser()
{
PrincipalContext pc = new PrincipalContext(ContextType.Machine,
"host_ip",
"adminaccount",
"adminpassword");
UserPrincipal up = new UserPrincipal(pc);
up.Name = "user";
up.DisplayName = "user";
up.SetPassword("user");
up.Description = "user";
up.UserCannotChangePassword = true;
up.PasswordNeverExpires = true;
try
{
up.Save();
}
catch (Exception ex)
{
}
try
{
AddToGroup(pc, up);
}
catch (Exception ex)
{
}
}
private void AddToGroup(PrincipalContext pc, UserPrincipal u)
{
string group = "Remote Desktop Users";
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(pc, group);
if (groupPrincipal.Members.Contains(pc, IdentityType.SamAccountName, u.SamAccountName)) //error occurs here
{
return;
}
groupPrincipal.Members.Add(u);
try
{
groupPrincipal.Save();
}
catch (Exception e)
{
}
}
它從今天早上開始工作,用戶創建總是成功,但我在線路上收到此錯誤:
- 如果(groupPrincipal.Members.Contains(PC,IdentityType.SamAccountName,u.SamAccountName))
錯誤(1332),而 枚舉組成員發生。 成員的SID無法解析。
謝謝你的回答
謝謝你馬特, 你可能是對的,我不能找出另一個出身。 有一種方法可以根據MS修復此問題: 「刪除(使用GUI)組中的錯誤SID可解決問題。」 任何想法如何識別錯誤的SID? – adun 2010-07-08 13:36:16