Новый пользователь [Delphi]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by marcos, 24 Dec 2009.

  1. marcos

    marcos New Member

    Joined:
    8 Nov 2009
    Messages:
    111
    Likes Received:
    1
    Reputations:
    -5
    Всем привет, подскажите можно ли написать на делфи программу, которая создавала бы пользователя в винде?
     
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Кажется, можно.
     
  3. marcos

    marcos New Member

    Joined:
    8 Nov 2009
    Messages:
    111
    Likes Received:
    1
    Reputations:
    -5
    как?
     
  4. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Речь идет об обычном пользователе системы, или об пользователе для дедика?
    Так или иначе, тебе нужно использовать команды cmd.
     
  5. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    NetUserAdd
    http://msdn.microsoft.com/en-us/library/aa370649%28VS.85%29.aspx
     
  6. marcos

    marcos New Member

    Joined:
    8 Nov 2009
    Messages:
    111
    Likes Received:
    1
    Reputations:
    -5

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

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    976
    Reputations:
    783
    Это WinAPI а не СИ. Или английского тоже не знаешь?
     
  8. marcos

    marcos New Member

    Joined:
    8 Nov 2009
    Messages:
    111
    Likes Received:
    1
    Reputations:
    -5
    Так а как это на Делфи Реализовать?

    NetUserAdd(servername,level,buf,parm_err);

    Так?
     
  9. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    Code:
    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.
    
     
  10. marcos

    marcos New Member

    Joined:
    8 Nov 2009
    Messages:
    111
    Likes Received:
    1
    Reputations:
    -5
    neprovad, код не работает(((Почему, может нужно чтото подключить?
     
    1 person likes this.
  11. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    подключить мозги, пиратскими версиями мозгов лучше не пользоваться, советую купить ибо недорого