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

Method EnumPrivileges

WinSysCore/Token.cpp:126–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124}
125
126std::vector<TokenPrivilege> Token::EnumPrivileges() const {
127 std::vector<TokenPrivilege> privs;
128 BYTE buffer[1 << 13];
129 DWORD len;
130 if (!::GetTokenInformation(_handle.get(), TokenPrivileges, buffer, sizeof(buffer), &len))
131 return privs;
132
133 auto data = (TOKEN_PRIVILEGES*)buffer;
134 auto count = data->PrivilegeCount;
135 privs.reserve(count);
136
137 WCHAR name[64];
138 for (ULONG i = 0; i < count; i++) {
139 TokenPrivilege priv;
140 auto& p = data->Privileges[i];
141 priv.Privilege = p.Luid;
142 len = _countof(name);
143 if (::LookupPrivilegeName(nullptr, &p.Luid, name, &len))
144 priv.Name = name;
145 priv.Attributes = p.Attributes;
146 privs.push_back(std::move(priv));
147 }
148 return privs;
149}
150
151bool Token::EnablePrivilege(PCWSTR privName, bool enable) {
152 wil::unique_handle hToken;

Callers 1

InitTokenMethod · 0.80

Calls 2

reserveMethod · 0.80
push_backMethod · 0.80

Tested by

no test coverage detected