append l’utilisateur actuel / sélectionné à un groupe

quelqu’un peut-il me dire comment puis-je (par programme) append l’utilisateur actuel / sélectionné à un groupe (comme un utilisateur expérimenté, des opérateurs de sauvegarde)?

toute fonction / info / code est la bienvenue

    Eh bien, si tout ce que vous voulez faire est d’append un utilisateur à un groupe local, vous souhaitez que l’API NetLocalGroupAddMembers (pour le faire en C de toute façon).

    À titre d’exemple simple:

    LOCALGROUP_MEMBERS_INFO_3 member[1]; // Add using fully qualified name, could also use SID with LOCALGROUP_MEMBERS_INFO_0 member[0].lgrmi3_domainandname = L"MAIN\\username"; status = NetLocalGroupAddMembers(NULL, L"Power Users", 3, (LPBYTE)member, 1); 

    Le nom du groupe est simplement le nom textuel du groupe sur le système que vous pouvez déterminer par programme en utilisant quelque chose comme:

     PLOCALGROUP_INFO_0 groups = NULL; DWORD dwCount = 0; DWORD dwTotalCount = 0; NET_API_STATUS status = NetLocalGroupEnum(NULL, 0, (LPBYTE*)&groups, MAX_PREFERRED_LENGTH, &dwCount, &dwTotalCount, NULL); if(status == NERR_Success) { for(DWORD i = 0; i < dwCount; i++) { printf("%ls\n", groups[i].lgrpi0_name); } NetApiBufferFree(groups); } else { printf("Error %d\n", status); } 

    En ajoutant au groupe global, vous devrez plutôt utiliser l'API NetGroupAddUser.

    Voici un exemple utilisant le Jedi JCL

     program Delphi_AdduserToGroup; {$APPTYPE CONSOLE} uses Windows, JclWin32, SysUtils; Procedure AddUsertoGroup(aUser,aGroup:PWideChar); var GroupMembersInfo : PLocalGroupMembersInfo3; ResInt : Integer; begin GetMem(GroupMembersInfo,sizeof(TLocalGroupMembersInfo3)); try //Writeln(aUser+'->'+aGroup); GroupMembersInfo^.lgrmi3_domainandname :=aUser; ResInt:=NetLocalGroupAddMembers(nil,aGroup,3,pointer(GroupMembersInfo),1); case ResInt of NERR_Success : Writeln('User added to group '+aGroup); ERROR_ACCESS_DENIED : Writeln('The user does not have access to the requested information.'); ERROR_NO_SUCH_MEMBER : Writeln('One or more of the members specified do not exist. Therefore, no new members were added.'); ERROR_MEMBER_IN_ALIAS: Writeln('One or more of the members specified were already members of the local group. No new members were added.'); ERROR_INVALID_MEMBER : Writeln('One or more of the members cannot be added because their account type is invalid. No new members were added.'); else Writeln('Error '+IntToStr(ResInt)); end; finally FreeMem(GroupMembersInfo); end; end; begin try AddUsertoGroup('myuser','Administrators'); Readln; except on E:Exception do Writeln(E.Classname, ': ', E.Message); end; end. 

    Au revoir.

    Vous pouvez utiliser la fonction NetLocalGroupAddMembers dans l’API Windows.

    La bibliothèque d’API JEDI comprend une unité d’interface API d’access Lan Manager , à utiliser avec Delphi.