获取Windows用户所属组信息

 

type
NET_API_STATUS = DWORD;

PLocalGroupUserInfo_0 = ^TLocalGroupUserInfo_0;

TLocalGroupUserInfo_0 = record
GroupName: LPWSTR;
end;


function NetUserGetLocalGroups(ServerName: LPCWSTR;UserName: LPCWSTR;Level: DWORD;Flags: DWORD;Buf: Pointer;PrefMaxLen: DWORD;var EntriesRead: DWORD;var Entries:DWORD ):NET_API_STATUS;stdCall;external 'NETAPI32.DLL';


function NetApiBufferFree(Buffer: Pointer):NET_API_STATUS;stdCall;external 'NETAPI32.DLL';

 

function TSecurity_WIN.GetUserGroups(const AUser: WideString): TStringList;
const

NERR_Success = 0;
LG_INCLUDE_INDIRECT = 1;


var
wName: WideString;
dwResult: DWORD;
P: PLocalGroupUserInfo_0;
PrefMaxLen: DWORD;
EntriesRead: DWORD;
TotalEntries: DWORD;
I: Integer;
Buf: Pointer;
wGroup: WideString;
begin
Result := TStringList.Create;
wName := AUser;
PrefMaxLen := $FFFFFFFF;
EntriesRead := 0;
TotalEntries := 0;
Buf := nil;
dwResult := NetUserGetLocalGroups(nil,PWideChar(wName),0,LG_INCLUDE_INDIRECT,@Buf,PrefMaxLen,EntriesRead,TotalEntries);

 

if dwResult = NERR_Success then
begin
if Buf <> nil then
begin
P := PLocalGroupUserInfo_0(Buf);
Result.Clear;
for I := 0 to EntriesRead - 1 do
begin
wGroup := P^.GroupName;
Result.Add(wGroup);
Inc(P);
end;
NetApiBufferFree(Buf);
end;
end;
end;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值