使用Delphi创建Windows用户

Wel*_*Wel 4 windows delphi

我需要使用Delphi以管理员身份创建新的Windows用户

谢谢

RRU*_*RUZ 12

您可以使用JEDI标头中声明的NetUserAddNetUserSetGroups函数.

看到这个简单的样本.

program ProjectAddNewUser;

{$APPTYPE CONSOLE}

uses
  JclWin32,//Jedi Library
  Windows,
  SysUtils;


function CreateWinUser(const wServer, wUsername, wPassword, wGroup:WideString): Boolean;
var
  Buf       : USER_INFO_2;//Buf for the new user info
  Err       : NET_API_STATUS;
  ParmErr   : DWORD;
  GrpUsrInfo: USER_INFO_0;//Buf for the group
  wDummyStr : WideString;
begin
  wDummyStr:='';
  FillChar (Buf, SizeOf(USER_INFO_2), 0);
  with Buf do
  begin
    usri2_name      := PWideChar(wUsername);
    usri2_full_name := PWideChar(wUsername);//You can add a more descriptive name here
    usri2_password  := PWideChar(wPassword);
    usri2_comment   := PWideChar(wDummyStr);
    usri2_priv      := USER_PRIV_USER;
    usri2_flags     := UF_SCRIPT OR UF_DONT_EXPIRE_PASSWD;
    usri2_script_path := PWideChar(wDummyStr);
    usri2_home_dir    := PWideChar(wDummyStr);
    usri2_acct_expires:= TIMEQ_FOREVER;
  end;

  GrpUsrInfo.usri0_name:=PWideChar(wGroup);

  Err := NetUserAdd(PWideChar(wServer), 1, @Buf, @ParmErr);
  Result := (Err = NERR_SUCCESS);

  if Result then //NOw you must set the group for the new user
  begin
  Err := NetUserSetGroups(PWideChar(wServer),PWideChar(wGroup),0,@GrpUsrInfo,1);
  Result := (Err = NERR_SUCCESS);
  end;
end;

begin

  if CreateWinUser('localhost', 'MyNewUser','ThePassword','MyWindowsGroup') then
   Writeln('Ok')
  else
   Writeln('False');

  Readln;
end.
Run Code Online (Sandbox Code Playgroud)

  • 为了与本地“管理员”组一起使用,我不得不更改三行代码。「GrpUserInfo:USER_INFO_0」成为「LOCALGROUP_MEMBERS_INFO_3」。GrpUserInfo.usri0_name:= PWideChar(wGroup)变成了GrpUsrInfo.lgrmi3_domainandname:= PWideChar(wUsername)。并且`Err:= NetUserSetGroups(PWideChar(wServer),PWideChar(wGroup),0,@ GrpUsrInfo,1)`变成`Err:= NetLocalGroupAddMembers(PWideChar(wServer),PWideChar(wGroup),3,@GrpUsrInfo,1)` 。 (2认同)