在Win2000中偶用NetUserAdd添加了一个用户,但在2000里看了一下,此用户不属于任何组,而我看了一下Msdn,用NetUserAdd添加的用户是Users用户,而且我用NetUserSetInfo和NetUserSetGroups更改均不能修改权限,不知道为什么,希望各位最好能给小弟一个Delphi的例子。在下感激不尽!
解决方案 »
- ScrollBox+标尺
- 请教此C#函数翻译成DELPHI如何写
- 不耻下问:如何组织一个中小型的delphi项目?送全部的分,舍不得孩子套不来狼啊。
- 如何在popupMenu里加入最小化,最大化等菜单,该怎样做
- form1、form2、form3三个窗体的showmodal问题?请帮忙!
- 有什么办法可以实现将录音并将录音后的文件保存为MP3的吗?或有Wav转Mp3的免费控件否?
- 在点了关闭后怎样怎让用户选择是否关闭??(在线等,有答案立刻结贴)
- 怎样才可以把JPG文件中的图片LOAD进一个CANVAS?
- 伟大的Anders Heijsberg 的图片! 而且是贴在“外星人”的网页上的 —— 不知道是哪国文字。
- delphi中ADO连接会和ActiveX控件冲突
- 怎样用一个按钮调用其他的exe程序?
- 第三方控件
功 能: 添加系统用户
参 数: strName 用户名,strPwd 用户密码,n该用户的属性默认
0为users用户 ,1为管理员用户
返回值: 1添加用户成功,0添加失败,
11添加用户及属性设置成功,10添加用户成功属性设置失败
备 注: ===========================================================================}
function AddWinUser(strName,strPwd: string; n: Integer): Integer;
Const
USER_PRIV_USER = 1;
UF_SCRIPT = $0001;
NERR_Success = 0;
Var
P : PUserInfo_1;
dwError : DWORD;
wUserName : WideString;
wPassword : WideString;
wGroupName : WideString;
dwResult : DWORD;
Q : PLocalGroupMembersInfo_3;
wDomainAndName : WideString;
begin
Result := 0;
New( P );
wUserName := strName;
wPassword := strPwd;
P^.User_Name := PWideChar( wUserName );
P^.Password := PWideChar( wPassword );
P^.Password_Age := 0;
P^.Privilege := USER_PRIV_USER;
P^.Home_Dir := Nil;
P^.Comment := Nil;
P^.Flags := UF_SCRIPT;
P^.Script_Path := Nil;
dwResult := NetUserAdd( Nil, 1, P, dwError );
If dwResult = NERR_Success Then
Begin
Result := 1;
if n = 1 then
begin
New( Q );
wDomainAndName := wUserName;
Q^.DomainAndName := PWideChar( wDomainAndName );
wGroupName := 'Administrators';// 'Guests';'Users'; 多次调用API加入权限组
dwResult := NetLocalGroupAddMembers( Nil, PWideChar( wGroupName ), 3, Q, 1 );
If dwResult = NERR_Success Then
Result := 11
else
Result := 10;
Dispose( Q );
end;
End;
Dispose( P );
end;
NET_API_STATUS = DWORD; PUserInfo_1 = ^TUserInfo_1;
TUserInfo_1 = Record
User_Name : LPWSTR;
Password : LPWSTR;
Password_Age : DWORD;
Privilege : DWORD;
Home_Dir : LPWSTR;
Comment : LPWSTR;
Flags : DWORD;
Script_Path : LPWSTR;
End; PLocalGroupMembersInfo_3 = ^TLocalGroupMembersInfo_3;
TLocalGroupMembersInfo_3 = Record
DomainAndName : LPWSTR;
End; Function NetUserAdd( ServerName : LPWSTR; Level : DWORD; Buf : Pointer;
Var ParmError : DWORD ) :
NET_API_STATUS; StdCall; External 'NETAPI32.DLL'; Function NetUserDel( ServerName: LPCWSTR; username: LPCWSTR ): NET_API_STATUS;
stdcall;external 'netapi32.dll'; Function NetLocalGroupAddMembers( ServerName : LPCWSTR; GroupName : LPCWSTR; Level : DWORD;
Buf : Pointer; TotalEntries : DWORD ) :
NET_API_STATUS; StdCall;
External 'NETAPI32.DLL';
{以上声明为AddWinUser、函数使用}
不试怎么知道简单?
没有成功 ^_^
用net localgroup administrator naughtyboy /add
来修改用户所在的组吧
winexec(pchar('net localgroup administrators naughtyboy /add'),sw_hide);
winexec(pchar('net user naughtyboy /delete'),sw_hide);
终于能修改用户的本地组了
用下面的var
ginfo: PLocalGroupMembersInfo3;
begin
GetMem(ginfo,sizeof(TLocalGroupMembersInfo3));
ginfo^.lgrmi3_domainandname := 'hongwei';
NetLocalGroupAddMembers(nil,'Administrators',3,pointer(ginfo),1);
FreeMem(ginfo);
end;去www.delphi-jedi.org下载LanManager,lm.h里面的net api绝大部分都被解释到pas单元了
另外你也可以自己定义record
不过楼主所说的netusersetinfo和netusersetgroups好像不行