dcsimg
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


Tip of the Day
Language: NT
Expertise: Beginner
May 19, 1998

WEBINAR:

On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning


Win NT Domain Management from VB5

Question:
Are simple domain management tasks such as "Add User to a Group" or "Add a Computer to an NT domain" possible under VB5? Do you have sample codes?

Answer:
Adding a user to a global group is not very difficult. The code below will allow you to do this. Note that you should replace "\\LJ_Server" with the name of your PDC, "TestGroup" with the name of an already-created global group, and "xxx" with the name of a user already entered in on the PDC.

I was not able to find a way to add a computer to the NT domain. Apparently, that function is not exposed via the 32-bit API, which kinda makes sense, security-wise, but is rather annoying nonetheless.


Private Sub Command1_Click()
  AddUserToGlobalGroup "\\LJ_Server", _
                       "TestGroup", _
                       "xxx"
End Sub

Option Explicit

Declare Function NetGroupAddUser _
   Lib "netapi32.dll" _
   (ServerName As Byte, _
    GroupName As Byte, _
    UserName As Byte) As Long

Private Const NERR_Success          As Long = 0&
Private Const NERR_Base             As Long = 2100
Private Const NERR_InvalidComputer  As Long = NERR_Base + 251
Private Const NERR_NotPrimary       As Long = NERR_Base + 126
Private Const NERR_GroupExists      As Long = NERR_Base + 123
Private Const NERR_UserNotFound     As Long = NERR_Base + 121
Private Const NERR_GroupNotFound    As Long = NERR_Base + 120
Private Const NERR_UserNotInGroup   As Long = NERR_Base + 137
' ------------------------------
' Add a user to the global group
' ------------------------------
Public Sub AddUserToGlobalGroup(ByVal xi_strServerName As String, _
               ByVal xi_strGroupName As String, _
               ByVal xi_strUserName As String)
   Dim p_abytServerName()  As Byte
   Dim p_abytGroupName()   As Byte
   Dim p_abytUserName()    As Byte
   Dim p_lngRtn            As Long
   Dim p_strErr            As String
   
   ' ------------------------------
   ' Convert strings to byte arrays
   ' ------------------------------
   p_abytServerName = xi_strServerName & vbNullChar
   p_abytGroupName = xi_strGroupName & vbNullChar
   p_abytUserName = xi_strUserName & vbNullChar
  
   ' ------------------------------
   ' Make the call to add user
   ' ------------------------------
   p_lngRtn = NetGroupAddUser(p_abytServerName(0), _
                              p_abytGroupName(0), _
                              p_abytUserName(0))
      
   If p_lngRtn <> NERR_Success Then
      ' Need to raise an error
      p_strErr = "Failed to add the user '" & _
                 xi_strUserName & _
                 "' to the global group, '" & _
                 xi_strGroupName & "'"
      
      Select Case p_lngRtn
         Case NERR_InvalidComputer
            p_strErr = p_strErr & " -- This server name is invalid: '" & _
                       xi_strServerName & "'."
         Case NERR_NotPrimary
            p_strErr = p_strErr & " -- This operation is only allowed on the primary domain controller of the domain."
         Case NERR_GroupExists
            p_strErr = p_strErr & " -- The group already exists."
         Case NERR_UserNotFound
            p_strErr = p_strErr & " -- The user name could not be found."
         Case NERR_GroupNotFound
            p_strErr = p_strErr & " -- The group name could not be found."
         Case NERR_UserNotInGroup
            p_strErr = p_strErr & " -- The user does not belong to this group."
         Case 53
            p_strErr = p_strErr & " -- The network path was not found."
         Case Else
            ' Just keep original error string
            p_strErr = p_strErr & "."

      End Select
         
      Err.Raise Number:=p_lngRtn, _
                Source:="AddUserToGlobalGroup", _
                Description:=p_strErr
   End If
   
End Sub
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date