我从网上下载了一段VB的代码.是调用 NetUserAdd 来创建与删除系统用户的:
Option Explicit
Private Declare Function NetUserAdd Lib "netapi32.dll" (ServerName As Byte, ByVal Level As Long, Buffer As USER_INFO_1, ParmError As Long) As Long
Private Declare Function NetUserDel Lib "netapi32.dll" (ByVal ServerName As String, ByVal UserName As String) As Long
Private Type USER_INFO_1
ptrName As Long
ptrstrPassWord As Long
dwstrPassWordAge As Long
dwPriv As Long
ptrHomeDir As Long
ptrComment As Long
dwFlags As Long
ptrScriptPath As Long
End Type
Private Const NERR_Success As Long = 0&
Private Const USER_PRIV_USER = 1
Private Const UF_NORMAL_ACCOUNT = &H200
Private Const UF_SCRIPT = &H1
Private m_strUserName As String
Private Const UF_ACCOUNTDISABLE = &H2
Private Const UF_HOMEDIR_REQUIRED = &H8
Private Const UF_PASSWD_NOTREQD = &H20
Private Const UF_PASSWD_CANT_CHANGE = &H40
Private Const UF_LOCKOUT = &H10
Private Const UF_DONT_EXPIRE_PASSWD = &H10000
Private Declare Function NetLocalGroupAddMembers Lib "netapi32.dll" (ByVal ServerName As String, ByVal GroupName As String, ByVal Level As Long, buf As Any, ByVal totalentries As Long) As Long
Private Type LOCALGROUP_MEMBERS_INFO_3
lgrmi3_domainandname As Long
End Type
Function AddUser(ByVal UserName As String, ByVal PassWord As String) As Boolean
AddUser = False
Dim ParmError As Long
Dim UI As USER_INFO_1
Dim UI3 As LOCALGROUP_MEMBERS_INFO_3
Dim Result As Long
With UI
.ptrName = StrPtr(UserName)
.ptrstrPassWord = StrPtr(PassWord)
.dwstrPassWordAge = 3
.dwPriv = USER_PRIV_USER
.ptrComment = StrPtr("")
.dwFlags = UF_SCRIPT Or UF_NORMAL_ACCOUNT Or UF_PASSWD_CANT_CHANGE Or UF_DONT_EXPIRE_PASSWD
End With
Result = NetUserAdd(0, 1, UI, ParmError)
Result = AddUserToGroup(vbNullString, "Administrators", UserName)
If Result = NERR_Success Then AddUser = True
End Function
Function DelUser(ByVal UserName As String) As Boolean
Dim lngResult As Long
Dim strUnicodeUserName As String
strUnicodeUserName = StrConv(UserName, vbUnicode)
lngResult = NetUserDel(vbNullString, strUnicodeUserName)
If lngResult = NERR_Success Then DelUser = True
End Function
Function AddUserToGroup(ByVal ServerName As String, ByVal GroupName As String, ByVal UserName As String) As Long
Dim lngResult As Long
Dim strServerName As String
Dim strLocalGroupName As String
Dim udtLGMemInfo As LOCALGROUP_MEMBERS_INFO_3
strLocalGroupName = StrConv(GroupName, vbUnicode)
udtLGMemInfo.lgrmi3_domainandname = StrPtr(UserName)
lngResult = NetLocalGroupAddMembers(vbNullString, strLocalGroupName, 3, udtLGMemInfo, 1)
End Function
Private Sub Command1_Click()
AddUser "impasse", "win"
End Sub
程序写好后,按F5运行,点击COMMAND1正常创建了一个用户名为"impasse"密码为"win"的"Administrator"用户.按理说这就正常没事了.结果我生成"工程1.exe"后运行,再点击"command1"系统没反应了...不创建用户..
我再回到设计环境下.加了一个COMMAND2 DELUSER 却正常了...就是说.编译后能正常删除用户不能创建,这样我又以为是我的编译环境不行(WINDOWS XP SP3)我马上放到 WINDOWS SERVER 2003 SP2下编译..生成EXE文件后与XP下生成的效果一样...
各位高手人..出出手啊.帮帮我..
谢谢了