使用目录服务和 Visual C sharp 将用户添加到本地系统
本文介绍如何使用 DirectoryServices
命名空间将用户添加到本地系统和 Visual C# 中的组。
原始产品版本: Visual C#
原始 KB 编号: 306273
摘要
本分步文章介绍如何使用 DirectoryServices
命名空间将用户添加到本地系统和组。
创建示例
启动 Visual Studio .NET 2003、Visual Studio 2005 或 Visual Studio 2008,然后创建新的 Visual C# 控制台应用程序项目。
在解决方案资源管理器中,右键单击“引用”,然后单击“添加引用”。
添加对程序集的
System.DirectoryServices.dll
引用。将 Class1.cs 文件中的代码替换为以下代码。
注意
在 Visual C# 2005 或 Visual C# 2008 中, Class1.cs 文件将替换为 Program.cs 文件。
using System; using System.DirectoryServices; class Class1 { static void Main(string[] args) { try { DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"); DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user"); NewUser.Invoke("SetPassword", new object[] {"#12345Abc"}); NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"}); NewUser.CommitChanges(); DirectoryEntry grp; grp = AD.Children.Find("Guests", "group"); if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});} Console.WriteLine("Account Created Successfully"); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadLine(); } } }
编译并运行项目。
在基于 Windows 2000 的计算机上执行以下步骤,验证帐户是否已创建并添加到来宾组:
- 在 “开始 ”菜单中,指向 “程序”,指向 “管理工具”,然后单击“ 计算机管理”。
- 单击此项可展开“ 本地用户和组” 节点。 新帐户应显示在“用户”节点下,以及“来宾”组的节点下。
在基于 Windows XP 的计算机上执行以下步骤,验证帐户是否已创建并添加到来宾组:
- 在“开始”菜单中,单击“控制面板”。
- 双击“ 用户帐户”。 新的用户帐户应显示在“ 用户帐户 ”对话框中。
重要
完成测试后,从系统中删除新创建的用户帐户。
创建新的目录条目
在此示例中创建目录条目时,假定系统正在运行Windows NT、Windows 2000 或 Windows XP。
注意
传递给构造函数的 DirectoryEntry
字符串以 "WinNT://"
开头。 还可以在其他第三方操作系统上运行目录服务。
DirectoryEntry AD = new DirectoryEntry("WinNT://" + SystemInformation.ComputerName + ",computer");
将目录项添加到目录树
以下代码向 Active Directory 树添加 DirectoryEntry
值为 的 TestUser1
类型用户。
DirectoryEntry NewUser = AD.Children.Add("TestUser1", "user");
设置新用户帐户的密码和说明
以下代码调用 Invoke 方法以调用 SetPassword
对象的 和 Put
方法 DirectoryEntry
。 这会设置密码并将说明分配给用户帐户。 此代码还调用 CommitChanges
方法来保存更改。
NewUser.Invoke("SetPassword", new object[] {"#12345Abc"});
NewUser.Invoke("Put", new object[] {"Description", "Test User from .NET"});
NewUser.CommitChanges();
将帐户添加到组
若要将帐户添加到组,请执行以下步骤:
- 定义 类型的
DirectoryEntry
变量。 Find
调用 类成员的ActiveDirectory
方法Children
以填充变量。 在这种情况下,来宾组是搜索的目标。 此代码测试方法返回的值Find
,以确定是否已找到组。 如果找到该组,则会将新用户帐户添加到该组。
DirectoryEntry grp;
grp = AD.Children.Find("Guests", "group");
if (grp != null) {grp.Invoke("Add", new object[] {NewUser.Path.ToString()});}
疑难解答
如果尝试在没有创建用户帐户的足够权限的情况下运行代码,则本文中的代码将失败。 若要成功完成代码,当前登录的用户必须是 Administrators 组的成员或具有允许用户创建用户帐户的特定权限。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈