Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Новый пользователь [Delphi] (https://forum.antichat.xyz/showthread.php?t=165832)

marcos 24.12.2009 17:26

Новый пользователь [Delphi]
 
Всем привет, подскажите можно ли написать на делфи программу, которая создавала бы пользователя в винде?

Chrome~ 24.12.2009 17:54

Кажется, можно.

marcos 24.12.2009 17:56

Цитата:

Сообщение от Chrome~
Кажется, можно.

как?

Chrome~ 24.12.2009 18:06

Речь идет об обычном пользователе системы, или об пользователе для дедика?
Так или иначе, тебе нужно использовать команды cmd.

neprovad 24.12.2009 18:09

NetUserAdd
http://msdn.microsoft.com/en-us/library/aa370649%28VS.85%29.aspx

marcos 24.12.2009 18:22

Цитата:

Сообщение от neprovad
NetUserAdd
http://msdn.microsoft.com/en-us/library/aa370649%28VS.85%29.aspx


Я к сожалению не знаю СИ... Возможно это на делфи?

.Slip 24.12.2009 18:26

Цитата:

Сообщение от marcos
Я к сожалению не знаю СИ... Возможно это на делфи?

Это WinAPI а не СИ. Или английского тоже не знаешь?

marcos 24.12.2009 18:43

Так а как это на Делфи Реализовать?

NetUserAdd(servername,level,buf,parm_err);

Так?

neprovad 24.12.2009 18:43

Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  LPUSER_INFO_2 = ^USER_INFO_2;
  {$EXTERNALSYM LPUSER_INFO_2}
  PUSER_INFO_2 = ^USER_INFO_2;
  {$EXTERNALSYM PUSER_INFO_2}
  _USER_INFO_2 = record
    usri2_name: LPWSTR;
    usri2_password: LPWSTR;
    usri2_password_age: DWORD;
    usri2_priv: DWORD;
    usri2_home_dir: LPWSTR;
    usri2_comment: LPWSTR;
    usri2_flags: DWORD;
    usri2_script_path: LPWSTR;
    usri2_auth_flags: DWORD;
    usri2_full_name: LPWSTR;
    usri2_usr_comment: LPWSTR;
    usri2_parms: LPWSTR;
    usri2_workstations: LPWSTR;
    usri2_last_logon: DWORD;
    usri2_last_logoff: DWORD;
    usri2_acct_expires: DWORD;
    usri2_max_storage: DWORD;
    usri2_units_per_week: DWORD;
    usri2_logon_hours: PBYTE;
    usri2_bad_pw_count: DWORD;
    usri2_num_logons: DWORD;
    usri2_logon_server: LPWSTR;
    usri2_country_code: DWORD;
    usri2_code_page: DWORD;
  end;
  {$EXTERNALSYM _USER_INFO_2}
  USER_INFO_2 = _USER_INFO_2;
  {$EXTERNALSYM USER_INFO_2}
  TUserInfo2 = USER_INFO_2;
  PUserInfo2 = puser_info_2; 

  function NetUserAdd(ServerName: LPCWSTR; Level: DWORD;
    Buff: PByte; var Parm_Err: DWORD): DWORD; stdcall;
    external 'netapi32.dll';

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  NERR_Success = 0;
  USER_PRIV_USER  = 1;
  UF_SCRIPT = $0001;
  UF_DONT_EXPIRE_PASSWD = $10000;
var
  UserInfo: TUserInfo2;
  Parm_Err: DWORD;
begin
  ZeroMemory(@UserInfo, SizeOf(TUserInfo2));
  UserInfo.usri2_name := 'TestUser';
  UserInfo.usri2_password := '123';
  UserInfo.usri2_priv := USER_PRIV_USER;
  UserInfo.usri2_flags := UF_SCRIPT or UF_DONT_EXPIRE_PASSWD;
  if NetUserAdd(nil, 2, @UserInfo, Parm_Err) <> NERR_Success then
    RaiseLastOSError
  else
    ShowMessage('Пользователь TestUser с паролем 123 успешно добавлен.');
end;

end.


marcos 24.12.2009 19:10

neprovad, код не работает(((Почему, может нужно чтото подключить?


Время: 13:23