How To Add a User to the Local System by Using Directory Services and Visual Basic .NET

How To Add a User to the Local System by Using Directory Services and Visual Basic .NET
View products that this article applies to.
Article ID : 306271
Last Review : July 15, 2004
Revision : 1.0
This article was previously published under Q306271
On This Page
SUMMARY
Requirements
Create the Sample
Code Explanation
Create a New Directory Entry
Add the Directory Entry to the Directory Tree
Set the Password and Description for the New User Account
Add the Account to a Group
Troubleshooting
REFERENCES
APPLIES TO

SUMMARY
This article describes how to use the DirectoryServices namespace to add a user to the local system and a group.

Back to the top

Requirements
• Microsoft Visual Basic .NET

Back to the top

Create the Sample
1. Open Microsoft Visual Studio .NET, and create a new Visual Basic Console Application project.
2. In Solution Explorer, right-click References, and then click Add Reference.
3. Add a reference to the System.DirectoryServices.dll assembly.
4. Replace the code in Module1.vb with the following code:Imports System.DirectoryServices
Module Module1

Sub Main()
Try
Dim AD As DirectoryEntry = _
New DirectoryEntry(“WinNT://” + Environment.MachineName + “,computer”)
Dim NewUser As DirectoryEntry = AD.Children.Add(“TestUser1”, “user”)
NewUser.Invoke(“SetPassword”, New Object() {“#12345Abc”})
NewUser.Invoke(“Put”, New Object() {“Description”, “Test User from .NET”})
NewUser.CommitChanges()
Dim grp As DirectoryEntry

grp = AD.Children.Find(“Guests”, “group”)
If grp.Name “” Then
grp.Invoke(“Add”, New Object() {NewUser.Path.ToString()})
End If
Console.WriteLine(“Account Created Successfully”)
Console.ReadLine()

Catch ex As Exception
Console.WriteLine(ex.Message)
Console.ReadLine()
End Try
End Sub

End Module

5. Compile and run the project.
6. Follow these steps on a Windows 2000-based computer to verify that the account was created and added to the Guest group:

a. From the Start menu, point to Programs, point to Administrative Tools, and then click Computer Management.
b. Click to expand the Local Users and Groups node. The new account should appear under the Users node, as well as under the node for the Guest group.
Follow these steps on a Windows XP-based computer to verify that the account was created and added to the Guest group:a. From the Start menu, click Control Panel.
b. Double-click User Accounts. The new user account should appear in the User Accounts dialog box.

7. Importantly, remove the newly created user account from the system after you finish testing.

Back to the top

Code Explanation
Create a New Directory Entry
When you create the directory entry in this sample, it is assumed that the system is running Microsoft Windows NT, Windows 2000, or Windows XP. Note that the string that is passed to the DirectoryEntry constructor begins with “WinNT://”. You can also run Directory Services on other third-party operating systems. Dim AD As DirectoryEntry = _
New DirectoryEntry(“WinNT://” + Environment.MachineName + “,computer”)

Add the Directory Entry to the Directory Tree
The following code adds a DirectoryEntry of type user with the value of TestUser1 to the Active Directory tree. Dim NewUser As DirectoryEntry = AD.Children.Add(“TestUser1”, “user”)

Set the Password and Description for the New User Account
The following code calls the Invoke method to invoke the SetPassword and Put methods of the DirectoryEntry object. This sets the password and assigns a description to the user account. This code also calls the CommitChanges method to save the changes. NewUser.Invoke(“SetPassword”, New Object() {“#12345Abc”})
NewUser.Invoke(“Put”, New Object() {“Description”, “Test User from .NET”})
NewUser.CommitChanges()

Add the Account to a Group
The first step to add the account to a group is to define a variable of type DirectoryEntry. Then you call the Find method of the Children member of the ActiveDirectory class to populate the variable. In this case, the Guest group is the target of the search. This code tests the value that the Find method returns to determine if the group has been found. If the group is found, the new user account is added to the group. Dim grp As DirectoryEntry
grp = AD.Children.Find(“Guests”, “group”)
If grp.Name “” Then
grp.Invoke(“Add”, New Object() {NewUser.Path.ToString()})
End If

Back to the top

Troubleshooting
The code in this article fails if you try to run the code without the sufficient privileges to create a user account. For the code to complete successfully, the currently logged on user must be a member of the Administrators group or have specific permissions that allow the user to create user accounts.

Back to the top

REFERENCES
For more information about the Active Directory Service Interfaces, visit the following Microsoft Developer Network (MSDN) Web site:
http://msdn.microsoft.com/library/en-us/netdir/adsi/active_directory_service_interfaces_adsi.asp (http://msdn.microsoft.com/library/en-us/netdir/adsi/active_directory_service_interfaces_adsi.asp)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s