将网络服务帐户添加到c#中的Windows内置用户组

时间:2010-12-10 09:15:54

标签: c#

我正在尝试使用以下代码将网络服务帐户添加到内置安全组:

DirectoryEntry de = new DirectoryEntry("WinNT://" + System.Environment.MachineName);                 
DirectoryEntry deGroup = de.Children.Find( groupName, "group");   >> here groupname = <some builtin group>
DirectoryEntry usr = de.Children.Find(accountName,”user”); >> here accountname = NT AUTHORITY\NETWORK SERVICE
deGroup.Invoke("Add", new object[] { usr.Path });
deGroup.CommitChanges();

突出显示会抛出异常“无法找到用户名”。我错过了什么?如何将网络服务添加到内置组?

1 个答案:

答案 0 :(得分:1)

如果您使用的是.NET 3.5或更高版本,请查看System.DirectoryServices.AccountManagement。这些类很容易使用。例如,

PrincipalContext pc = new PrincipalContext(ContextType.Domain);
var user = UserPrincipal.FindByIdentity(pc, "johndoe");
var group = GroupPrincipal.FindByIdentity(oPrincipalContext, "some group name");
group.Members.Add(user);
group.Save();

请注意,对于计算机帐户(用户或群组),您需要使用ContextType.Machine