2009-10-18 18 views

回答

1

那麼如果你想要做的就是將用戶添加到本地組,那麼你需要NetLocalGroupAddMembers API(無論如何用C來完成)。

舉個簡單的例子:

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); 

組名稱就是你可以通過編程確定使用類似的系統組的文本名稱:

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); 
} 

添加到全局組您將需要改用NetGroupAddUser API。

2

在這裏,您使用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. 

再見的例子。

相關問題