作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 GetTokenInformation()/TokenGroups 获取当前登录用户所属的组。但是,从 API 返回的组列表还包括特殊组,如“INTERACTIVE”、“CONSOLE LOGON”、“Pre-Windows 2000 Compatible Access”等。
过滤掉特殊群体的最佳方法是什么?理想情况下,我只想保留您可以在给定用户属性对话框的“成员”选项卡上看到的组。
谢谢。
最佳答案
如评论中所建议,NetUserGetLocalGroups
很可能是“本地用户和组”管理单元中使用的函数。
您还可以根据您选择的任何条件过滤列表:
static bool ShouldHideGroup(PSID Sid, DWORD Attributes, bool HideDeny = false)
{
if (SE_GROUP_INTEGRITY & Attributes) return true;
if (SE_GROUP_LOGON_ID & Attributes) return true;
if (HideDeny && (SE_GROUP_USE_FOR_DENY_ONLY & Attributes)) return true;
for (UINT i = 0; i <= 0xff; ++i) // Hack to check if it is well known
{
if (IsWellKnownSid(Sid, (WELL_KNOWN_SID_TYPE)i))
{
static const SID_IDENTIFIER_AUTHORITY ntauth = SECURITY_NT_AUTHORITY;
PSID_IDENTIFIER_AUTHORITY pSIA = GetSidIdentifierAuthority(Sid);
DWORD*pSub1 = GetSidSubAuthority(Sid, 0);
if (memcmp(pSIA, &ntauth, 6) || *pSub1 != SECURITY_BUILTIN_DOMAIN_RID) // Hide everything except the BUILTIN\* groups
{
return true;
}
}
}
return false;
}
...
if (GetTokenInformation(hToken, TokenGroups, pTG, cbTG, &cbTG))
{
for (DWORD i = 0; i < pTG->GroupCount; ++i)
{
if (ShouldHideGroup(pTG->Groups[i].Sid, pTG->Groups[i].Attributes)) continue;
DisplayGroupDetails(pTG->Groups[i]);
}
}
Net* 函数在域和/或本地上运行 SAM数据库,其他组由 Windows 添加到您的 token ,但我不相信有公共(public) API 可以过滤您从 SAM 返回到确切组列表的方式。
关于c++ - 如何过滤掉GetTokenInformation()返回的特殊组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46076611/
我正在编写一个快速的 preg_replace 来从 CSS 中删除注释。 CSS 注释通常有这样的语法: /* Development Classes*/ /* Un-comment me for
使用 MySQL,我有三个表: 项目: ID name 1 "birthday party" 2 "soccer match" 3 "wine tasting evening" 4
我是一名优秀的程序员,十分优秀!