M
http://www.c-plusplus.net/forum/viewtopic-var-t-is-118484-and-highlight-is-.html << Dort findest du Code mit dem du feststellen kannst, ob der aktuelle User Mitglied der Gruppe "Administratoren" ist.
Die elementaren Rechte des aktuellen Benutzers kannst du so auflisten: (siehe auch)
void ListCurrentUserPrivileges() {
HANDLE hToken;
PTOKEN_PRIVILEGES pTokenPriv;
DWORD returncount = 0;
BOOL bRet = FALSE;
DWORD langid = 0;
pTokenPriv = (PTOKEN_PRIVILEGES)new CHAR[1024];
bRet = OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hToken);
assert(bRet);
bRet = GetTokenInformation(hToken, TokenPrivileges, pTokenPriv,1024,&returncount);
assert(bRet);
for (UINT i=0;i< pTokenPriv->PrivilegeCount ;i++) {
DWORD strbufsize = 256;
PCHAR strname = new CHAR[strbufsize];
ZeroMemory(strname,strbufsize);
PCHAR strdescription = new CHAR[strbufsize];
ZeroMemory(strdescription,strbufsize);
bRet = LookupPrivilegeName(NULL,&pTokenPriv->Privileges[i].Luid,strname,&strbufsize);
assert(bRet);
strbufsize = 256;
LookupPrivilegeDisplayName(NULL,strname,strdescription,&strbufsize,&langid);
assert(bRet);
std::cout << strname << "\n\t" << strdescription << "\n";
delete[] strname;
delete[] strdescription;
}
delete[] pTokenPriv;
}
Zum Auflisten der Rechte, die ein Benutzer auf ein Objekt(Dateisystem,Registry,etc) hat, musst du dich mit den entsprechenden DACLS auseinandersetzen.