Click here to Skip to main content
15,887,336 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: How to use a DirectShow sample filter ? Pin
Stephane Rodriguez.26-Nov-02 6:50
Stephane Rodriguez.26-Nov-02 6:50 
GeneralPorting from a NT to a '98 Pin
BlackRider24-Nov-02 20:43
BlackRider24-Nov-02 20:43 
GeneralRe: Porting from a NT to a '98 Pin
KarstenK24-Nov-02 21:12
mveKarstenK24-Nov-02 21:12 
GeneralNot a solution Pin
BlackRider24-Nov-02 21:29
BlackRider24-Nov-02 21:29 
GeneralRe: Not a solution Pin
KarstenK24-Nov-02 21:43
mveKarstenK24-Nov-02 21:43 
GeneralRe: Not a solution Pin
Daniel Turini24-Nov-02 22:57
Daniel Turini24-Nov-02 22:57 
Generaldetect if user has admin privilege Pin
devvvy24-Nov-02 20:24
devvvy24-Nov-02 20:24 
GeneralRe: detect if user has admin privilege Pin
Daniel Turini24-Nov-02 21:09
Daniel Turini24-Nov-02 21:09 
static inline BOOL IsAdmin(void) {
        
        HANDLE hToken;
        DWORD  dwStatus;
        DWORD  dwAccessMask;
        DWORD  dwAccessDesired;
        DWORD  dwACLSize;
        DWORD  dwStructureSize = sizeof(PRIVILEGE_SET);
        PACL   pACL            = NULL;
        PSID   psidAdmin       = NULL;
        BOOL   bReturn         = FALSE;
        
        PRIVILEGE_SET   ps;
        GENERIC_MAPPING GenericMapping;
        
        PSECURITY_DESCRIPTOR     psdAdmin           = NULL;
        SID_IDENTIFIER_AUTHORITY SystemSidAuthority = SECURITY_NT_AUTHORITY;
        
        __try {
                
                ImpersonateSelf(SecurityImpersonation);
                
                if (!OpenThreadToken(GetCurrentThread(), TOKEN_QUERY, FALSE, 
            &hToken)) {
                        
                        if (GetLastError() != ERROR_NO_TOKEN)
                                __leave;
                        
                        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, 
                                &hToken))
                                __leave;
                }
                
                if (!AllocateAndInitializeSid(&SystemSidAuthority, 2, 
            SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
            0, 0, 0, 0, 0, 0, &psidAdmin))
                        __leave;
                
                psdAdmin = LocalAlloc(LPTR, SECURITY_DESCRIPTOR_MIN_LENGTH);
                if (psdAdmin == NULL)
                        __leave;
                
                if (!InitializeSecurityDescriptor(psdAdmin,
            SECURITY_DESCRIPTOR_REVISION))
                        __leave;
                
                dwACLSize = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE) +
            GetLengthSid(psidAdmin) - sizeof(DWORD);
                
                pACL = (PACL)LocalAlloc(LPTR, dwACLSize);
                if (pACL == NULL)
                        __leave;
                
                if (!InitializeAcl(pACL, dwACLSize, ACL_REVISION2))
                        __leave;
                
                dwAccessMask= ACCESS_READ | ACCESS_WRITE;
                
                if (!AddAccessAllowedAce(pACL, ACL_REVISION2,
            dwAccessMask, psidAdmin))
                        __leave;
                
                if (!SetSecurityDescriptorDacl(psdAdmin, TRUE, pACL, FALSE))
                        __leave;
                
                SetSecurityDescriptorGroup(psdAdmin, psidAdmin, FALSE);
                SetSecurityDescriptorOwner(psdAdmin, psidAdmin, FALSE);
                
                if (!IsValidSecurityDescriptor(psdAdmin))
                        __leave;
                
                dwAccessDesired = ACCESS_READ;
                
                GenericMapping.GenericRead    = ACCESS_READ;
                GenericMapping.GenericWrite   = ACCESS_WRITE;
                GenericMapping.GenericExecute = 0;
                GenericMapping.GenericAll     = ACCESS_READ | ACCESS_WRITE;
                
                if (!AccessCheck(psdAdmin, hToken, dwAccessDesired, 
            &GenericMapping, &ps, &dwStructureSize, &dwStatus, 
            &bReturn)) {
                        printf("AccessCheck() failed with error %lu\n", GetLastError());
                        __leave;
                }
                
                RevertToSelf();
                
        } __finally {
                
                // Cleanup 
                if (pACL) LocalFree(pACL);
                if (psdAdmin) LocalFree(psdAdmin);  
                if (psidAdmin) FreeSid(psidAdmin);
        }
        
        return bReturn;
}


This is what I use to check for domain Admins. I found it on MSDN somewhere I don't recall and adapted for my specific use. You can use it as a starting point.


My latest article:
SQL Server DO's and DONT's[^]
GeneralRe: detect if user has admin privilege Pin
devvvy24-Nov-02 21:47
devvvy24-Nov-02 21:47 
GeneralRe: detect if user has admin privilege Pin
Daniel Turini24-Nov-02 22:06
Daniel Turini24-Nov-02 22:06 
GeneralCreating a window in an ATL without MFC Pin
Jerome Conus24-Nov-02 20:19
Jerome Conus24-Nov-02 20:19 
GeneralRe: Creating a window in an ATL without MFC Pin
Daniel Turini24-Nov-02 22:12
Daniel Turini24-Nov-02 22:12 
GeneralPreTranslateMessage question Pin
Mel Feik24-Nov-02 19:45
Mel Feik24-Nov-02 19:45 
GeneralRe: PreTranslateMessage question Pin
Christian Graus24-Nov-02 20:21
protectorChristian Graus24-Nov-02 20:21 
GeneralRe: PreTranslateMessage question Pin
Mel Feik24-Nov-02 20:39
Mel Feik24-Nov-02 20:39 
GeneralRe: PreTranslateMessage question Pin
Christian Graus24-Nov-02 20:46
protectorChristian Graus24-Nov-02 20:46 
GeneralRe: PreTranslateMessage question Pin
Christian Graus24-Nov-02 20:51
protectorChristian Graus24-Nov-02 20:51 
GeneralRe: PreTranslateMessage question Pin
Mel Feik24-Nov-02 21:05
Mel Feik24-Nov-02 21:05 
GeneralRe: PreTranslateMessage question Pin
Cosmin Marin25-Nov-02 0:52
Cosmin Marin25-Nov-02 0:52 
GeneralAdding text to toolbar buttons into a standard MFC SDI App Pin
Alex Cramer24-Nov-02 18:35
Alex Cramer24-Nov-02 18:35 
GeneralRe: Adding text to toolbar buttons into a standard MFC SDI App Pin
Anonymous25-Nov-02 23:46
Anonymous25-Nov-02 23:46 
Generalhelp! CreateThread! Pin
devvvy24-Nov-02 18:13
devvvy24-Nov-02 18:13 
GeneralRe: help! CreateThread! Pin
Michael Dunn24-Nov-02 18:20
sitebuilderMichael Dunn24-Nov-02 18:20 
GeneralRe: help! CreateThread! Pin
devvvy24-Nov-02 18:40
devvvy24-Nov-02 18:40 
GeneralRe: help! CreateThread! Pin
devvvy24-Nov-02 18:47
devvvy24-Nov-02 18:47 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.