MCPcopy Create free account
hub / github.com/BeneficialCode/WinArk / EnumGroups

Method EnumGroups

WinSysCore/Token.cpp:101–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99}
100
101std::vector<TokenGroup> WinSys::Token::EnumGroups(bool caps) const {
102 std::vector<TokenGroup> groups;
103 BYTE buffer[1 << 13];
104 DWORD len;
105 if (!::GetTokenInformation(_handle.get(), caps ? TokenCapabilities : TokenGroups, buffer, sizeof(buffer), &len))
106 return groups;
107
108 auto data = (TOKEN_GROUPS*)buffer;
109 groups.reserve(data->GroupCount);
110 for (ULONG i = 0; i < data->GroupCount; i++) {
111 auto const& g = data->Groups[i];
112 TokenGroup group;
113 Sid sid(g.Sid);
114 group.Sid = sid.AsString();
115 group.Name = sid.UserName(&group.Use);
116 if (group.Name.empty()) {
117 group.Name = group.Sid;
118 group.Use = SidTypeUnknown;
119 }
120 group.Attributes = (SidGroupAttributes)g.Attributes;
121 groups.push_back(std::move(group));
122 }
123 return groups;
124}
125
126std::vector<TokenPrivilege> Token::EnumPrivileges() const {
127 std::vector<TokenPrivilege> privs;

Callers 1

InitTokenMethod · 0.80

Calls 5

reserveMethod · 0.80
AsStringMethod · 0.80
UserNameMethod · 0.80
emptyMethod · 0.80
push_backMethod · 0.80

Tested by

no test coverage detected