type
 USER_INFO_0 = record
   usri0_name: PWideChar;
 end;
 uBuf0 = ^USER_INFO_0;procedure TForm2.Button2Click(Sender: TObject);
var
 buf: uBuf0;
begin
 GetMem(buf, sizeof(USER_INFO_0));
 try
   NetUserGetInfo(nil, 'administrator', 0, buf);
   Label1.Caption:=WideCharToStringbuf^.usri0_name);//<=============
    //運行結果不對,應顯示administrator,但前面有些'??'之類的符號。
    //不知為何...
 finally
   FreeMem(buf);
 end;
end;

解决方案 »

  1.   

    源代碼如下,繼續頂...:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      USER_INFO_0 = record
        usri0_name: PWideChar;
      end;
      uBuf0 = ^USER_INFO_0;  TForm1 = class(TForm)
        Edit1: TEdit;
        Label1: TLabel;
        Result: TLabel;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;  //釋放內存
    function NetApiBufferFree(
      Buffer: Pointer
      ): DWORD; stdcall; external 'netapi32.dll';//分配內存
    //NetApiBufferAllocate(sizeof(USER_INFO_0),@buf);
    function NetApiBufferAllocate(
      ByteCount: dword;
      Buffer: Pointer): DWORD; stdcall; external 'netapi32.dll';//取得用戶信息
    //0/1/2/3/10/11/20
    function NetUserGetInfo(
      Server: PWideChar;
      UserName: PWideChar;
      Level: DWORD;
      Buf: Pointer): Longint; stdcall; external 'netapi32.dll';
    implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
      buf: uBuf0;
    begin
      //NetApiBufferAllocate(sizeof(USER_INFO_0),@buf );
      GetMem(buf, sizeof(USER_INFO_0));
      try
        NetUserGetInfo(nil, pwidechar(WideString(Edit1.Text)), 0, buf);
        Result.Caption := WideCharToString(buf^.usri0_name);
      finally
        FreeMem(buf);
        //NetApiBufferFree(buf);
      end;
    end;end.
      

  2.   

    NetUserGetInfo(nil,'Administrator',0,Pointer(uinfo));
    Label1.Caption := uinfo^.usri0_name
      

  3.   

    呵呵...還是不行啊...
    用user_info_1或其它格式也一樣。
    我的OS是tra windows 2000+sp3
      

  4.   

    http://www.delphi-jedi.org/  把lanmanager下载下来
    里面的函数就可以直接用了
      

  5.   

    2000 pro sp3 + D6
    没有出现你说的错误
      

  6.   

    謝謝naughtyboy(重归起跑线)老兄關注,我的是繁體2000,
    執行果是:administrator前有'??'或其它亂碼字符,即
    '??   administrator'或'?3   administrator'等
    每次執行結果不一樣.那我再試試...
      

  7.   


    問題解決了,
    NetUserGetInfo(nil, 'administrator', 0, buf);
    改為
    NetUserGetInfo(nil, 'administrator', 0, @buf);