Je dois créer un nouvel utilisateur Windows en tant qu'administrateur en utilisant Delphicréer des fenêtres utilisateur en utilisant Delphi
Merci
Je dois créer un nouvel utilisateur Windows en tant qu'administrateur en utilisant Delphicréer des fenêtres utilisateur en utilisant Delphi
Merci
vous pouvez utiliser les fonctions NetUserAdd et NetUserSetGroups déclarées dans le JEDI Headers.
voir cet exemple simple.
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.
merci beaucoup mon ami – Wel
@RRUZ: j'essaye ce code, mais il échoue sur NetUserSetGroups avec l'erreur 2220 (Le nom du groupe n'a pas pu être trouvé). J'essaye de créer un utilisateur avec le groupe "Adminitrators". –
Pour le faire fonctionner avec le groupe 'Administrators' local, j'ai dû changer trois lignes de code. 'GrpUserInfo: USER_INFO_0' est devenu' LOCALGROUP_MEMBERS_INFO_3'. 'GrpUserInfo.usri0_name: = PWideChar (wGroup)' est devenu 'GrpUsrInfo.lgrmi3_domainandname: = PWideChar (wUsername)'. Et 'Err: = NetUserSetGroups (PWideChar (wServer), PWideChar (wGroup), 0, @ GrpUsrInfo, 1)' est devenu 'Err: = NetLocalGroupAddMembers (PWideChar (wServer), PWideChar (wGroup), 3, @GrpUsrInfo, 1)' . –
Je pense que l'API que vous appelez besoin est NetUserAdd.
Tout d'abord, vérifiez si Delphi fournit un wrapper pour cet appel. Sinon, vous devrez écrire le vôtre. Si vous ne savez pas comment faire des appels d'API Windows à partir de Delphi, vous avez d'autres recherches à faire.
+1, je ne pouvais pas trouver. J'ai l'impression que Delphi peut appeler ces fonctions directement, en supposant qu'elles correspondent à la convention d'appel correcte ... comme vous je ne sais pas. –
ou une ligne de commande utilitaire qui peut le faire grâce – Wel
résolus à l'aide utilisateur net mais s'il y a une autre solution plz postent grâce – Wel