1
我该如何去查询当前登录用户属于哪个活动目录组?我假设它将通过LDAP,但我已经能够找到很多关于如何获得这些特定信息。查找当前用户活动目录组C++
我已经把一些代码,但即时通讯不能肯定什么,我需要在下一个
// Open the access token associated with the calling process.
if (OpenProcessToken(GetCurrentProcess(),
TOKEN_QUERY,
&hToken) == FALSE)
{
dwErrorCode = GetLastError();
wprintf(L"OpenProcessToken failed. GetLastError returned: %d\n", dwErrorCode);
return HRESULT_FROM_WIN32(dwErrorCode);
}
// Retrieve the token information in a TOKEN_USER structure.
GetTokenInformation(hToken,
TokenUser, // Request for a TOKEN_USER structure.
NULL,
0,
&dwBufferSize);
pTokenUser = (PTOKEN_USER) new BYTE[dwBufferSize];
memset(pTokenUser, 0, dwBufferSize);
if (GetTokenInformation(hToken,
TokenUser,
pTokenUser,
dwBufferSize,
&dwBufferSize))
{
CloseHandle(hToken);
}
else
{
dwErrorCode = GetLastError();
wprintf(L"GetTokenInformation failed. GetLastError returned: %d\n", dwErrorCode);
return HRESULT_FROM_WIN32(dwErrorCode);
}
if (IsValidSid(pTokenUser->User.Sid) == FALSE)
{
wprintf(L"The owner SID is invalid.\n");
delete [] pTokenUser;
}
我开始拼凑一些代码,但我不知道我需要做什么在最后一步使用LookupAccountSid – thecaptain0220 2010-08-19 14:17:05
假设对'GetTokenInformation'的调用是成功的;你现在应该有一个指向'TOKEN_GROUPS'结构的指针,'ptokengroups'。对于每个“ptokengroups-> GroupCount”组,在'ptokengroups-> Groups [idx] .Sid'上调用'LookupAccountSid'。 – 2010-08-20 07:38:34
我看到你已经编辑了这个问题,并添加了代码,它使用具有TokenUser而不是TokenGroups的'GetTokenInformation',尽管你最初说你想检索当前用户所属的组。无论如何,给定代码,您现在可以通过调用'LookupAccountSid'来获取用户的名称和域名,这是第一次使用NULL输出缓冲区来检索它们的大小,然后使用有效的:'LookupAccountSid(NULL,(pTokenUser->用户).Sid,name,&namesize,domainname,&domainnamesize,&use)','SID_NAME_USE use = SidTypeUnknown'。对于组进行类似的处理。 – 2010-08-23 07:16:23