1

我有一段代码可以创建一个 Windows 用户。一切都很好,并且确实创建了用户。但是,当我尝试 pinvoke LoadUserProfile 时,操作失败,因为用户不在用户组中。现在,我知道如何务实地将此用户添加到用户组,但我不想硬编码组名“用户”,因为它可能会根据语言环境而改变。有没有办法默认将用户添加到用户组(顺便说一句, runas user /add 命令已经这样做了)?


DirectoryEntry dirEntry = new DirectoryEntry("WinNT://" + domain);
DirectoryEntries entries = dirEntry.Children;
DirectoryEntry user = entries.Add(username, "User");
user.Properties["FullName"].Add("Dr Zoidberg");
user.Invoke("SetPassword", password);
user.CommitChanges();
4

1 回答 1

2

Windows 和 Active Directory 有许多“众所周知的 SID”,它们是内置帐户和组的安全标识符。您可以使用众所周知的 SID 绑定到用户组,因为无论区域设置如何,它都不会更改。管理员甚至可以将用户组重命名为其他名称,但 SID 将保持不变。

众所周知的 SID 在 System.Security.Principal.WellKnownSidType 中枚举

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/system.security.principal.wellknownsidtype.aspx 。

于 2010-09-20T23:38:50.440 回答