Проверка администраторских прав

Тема в разделе "WASM.WIN32", создана пользователем ZeroMemory, 28 авг 2006.

  1. ZeroMemory

    ZeroMemory New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    79
    Собственно сабж, как определить под юзером запущена винда или под админом.

    Спасибо.
     
  2. Avoidik

    Avoidik New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2004
    Сообщения:
    288
    Адрес:
    Russia
    BOOL IsUserAnAdmin(VOID);
     
  3. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    530
    Адрес:
    Russia
    http://www.wasm.ru/forum/viewtopic.php?id=12432
     
  4. rav

    rav New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2004
    Сообщения:
    159
    Адрес:
    Москва
    Код (Text):
    1. BOOL IsAdmin(void)
    2. {
    3.     HANDLE                   hAccessToken;
    4.     BYTE                     *InfoBuffer;
    5.     PTOKEN_GROUPS            ptgGroups;
    6.     DWORD                    dwInfoBufferSize;
    7.     PSID                     psidAdministrators;
    8.     SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_NT_AUTHORITY;
    9.     UINT                     i;
    10.     BOOL                     bRet = FALSE;
    11.  
    12.     if(!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hAccessToken))
    13.        goto cleanup;
    14.    
    15.     InfoBuffer = new BYTE[1024];
    16.     if(!InfoBuffer)
    17.        goto cleanup;
    18.  
    19.     bRet = GetTokenInformation(hAccessToken,
    20.                                TokenGroups,
    21.                                InfoBuffer,
    22.                                1024,
    23.                                &dwInfoBufferSize);
    24.  
    25.     CloseHandle( hAccessToken );
    26.  
    27.     if(!bRet)
    28.        goto cleanup;
    29.  
    30.     if(!AllocateAndInitializeSid(&siaNtAuthority,
    31.                                  2,
    32.                                  SECURITY_BUILTIN_DOMAIN_RID,
    33.                                  DOMAIN_ALIAS_RID_ADMINS,
    34.                                  0,0,0,0,0,0,
    35.                                  &psidAdministrators))
    36.        goto cleanup;
    37.  
    38.     bRet = FALSE;
    39.  
    40.     ptgGroups = (PTOKEN_GROUPS)InfoBuffer;
    41.  
    42.     for(i=0;i<ptgGroups->GroupCount;i++)
    43.     {
    44.         if(EqualSid(psidAdministrators,ptgGroups->Groups[i].Sid))
    45.         {
    46.             bRet = TRUE;
    47.             break;
    48.         }
    49.     }
    50.  
    51.     FreeSid(psidAdministrators);
    52.  
    53. cleanup:
    54.  
    55.     if (InfoBuffer)
    56.         delete InfoBuffer;
    57.  
    58.     return bRet;
    59. }
     
  5. ZeroMemory

    ZeroMemory New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2005
    Сообщения:
    79
    Спасибо большое!!!