任何人都可以告诉我如何(以编程方式)将当前/所选用户添加到组(如高级用户,备份操作员)
欢迎任何函数/信息/代码
答案 0 :(得分: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.
再见。
答案 1 :(得分: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 :(得分:0)
您可以使用Windows API中的NetLocalGroupAddMembers功能。
JEDI API Library包含Lan Manager Access API interface Unit,用于Delphi。