使用netapi32.dll中的NetUserAdd函数时发生的问题...如何解决???
源码如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
USER_INFO_1=record
usri1_name:pwidechar;
usri1_password:pwidechar;
usri1_password_age:dword;
usri1_priv:dword;
usri1_home_dir:pwidechar;
usri1_comment:pwidechar;
usri1_flags:dword;
usri1_script_path:pwidechar;
end;
buffer=^User_info_1;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function NetUserAdd(Server:PWideChar;Level:DWORD;Buf:pointer;ParmError:dword):LongInt;stdcall; external 'netapi32.dll';
procedure TForm1.Button1Click(Sender: TObject);
var buf:buffer;
rlt:LongInt;
begin
try
getMem(buf,sizeOf(User_info_1));
buf^.usri1_name :='test';
buf^.usri1_password :='test';
buf^.usri1_password_age:=0;
buf^.usri1_priv :=1;
buf^.usri1_home_dir :=nil;
buf^.usri1_comment:=nil;
buf^.usri1_flags :=1;
buf^.usri1_script_path :=nil;
rlt:=NetUserAdd(nil,1,pointer(Buf), 0);
freemem(buf);
except
end;
end;
end.
如上一段代码,增加一个用户名test,密码为test,隶属于user组的系统用户,成功;
我把其中的
buf^usri1_priv:=2; //隶属为administrator组
不成功. 函数调用后返回值为87 (&H57) 我查了一下,提示错误信息为:线程地址不正确. //我想加一个隶属于administrator用户组的用户,不知道是不是参数设错,还请高手帮忙啊!!!!