热情软件屋

 

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下的帐户,功能非常全面,你可以参考。

此问题由大鱼儿回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio