NetUserAdd 这个API函数在Delphi 里怎么用
编号:QA004487
建立日期: 2001年11月18日 最后修改日期:2002年3月28日
所属类别:
万幸:
请问NetUserAdd 这个API函数在Delphi 里怎么用?!!无论小生怎么用,都不能经过编译。诸位大侠有用过这个函数的,能否教教小生?!!小生水平极差,希望能有一个详细的列子。谢谢!
回答:
用DELPHI实现为NT添加用户
文章来源 [大鱼儿] / 作者 [大鱼儿] 出处:http://yousoft.home.chinaren.com
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;
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;
error:integer;
begin
getmem(buf,sizeof(USER_INFO_1));
with buf^ do
begin
usri1_name:='123e';
usri1_password:='123456789';
usri1_password_age:=0;
usri1_priv:=1;
usri1_home_dir:=nil;
usri1_comment:=nil;
usri1_flags:=1;
usri1_script_path:=nil;
end;
netuseradd(nil,1,pointer(buf), @error);
freemem(buf);
end;
fox问:
这样运行没有问题,但当把usri1_name:='123e',换成 usri1_name:=pwidechar(edit1.text)以后,Win2000中计算机管理中的用户中,会出现刚才加的用户,但只是乱码,无法辨别,不知什么原因,请赐教!
李海答:这个结构的特殊之处就是其使用WideChar,即Unicode字符串。而一般的Delphi字符传是ANSI的。你使用PWideChar强制转换虽然可以通过编译,但并不能将字符串由ANSI转换为Unicode。你应该这样修改:
var ws:WideString;
......
ws := Edit1.Text;
usri1_name := PWideChar(ws);
另外,这里有一个例子
lanman.zip,它提供了几个控件来管理NT下的帐户,功能非常全面,你可以参考。
此问题由大鱼儿回答。
| |
|
|
| |
|
|