Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//=============================================================================*
// COPYRIGHT� 2001 Microsoft Corporation and Executive Software International, Inc.
//=============================================================================*
// File: AdminPrivs.cpp
//=============================================================================*
// DfrgVols.cpp : Implementation of CDfrgVols
#include "stdafx.h"
#include <windows.h>
#include "message.h"
#include "AdminPrivs.h"
#include "assert.h"
/****************************************************************************************************************
COPYRIGHT� 2001 Microsoft Corporation and Executive Software International, Inc.
ROUTINE DESCRIPTION: This routine checks if the current user belongs to an Administrator Group.
GLOBAL VARIABLES:
INPUT: None.
RETURN: TRUE = success - User does belong to an Administrator group FALSE = failure - User does Not belong to an Administrator group */
BOOL CheckForAdminPrivs() { BOOL bIsAdministrator = FALSE; HRESULT hr = S_OK; DWORD dwErr = 0; TCHAR cString[300];
DWORD dwInfoBufferSize = 0; PSID psidAdministrators; SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_NT_AUTHORITY;
BOOL bResult = AllocateAndInitializeSid(&siaNtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &psidAdministrators);
if (bResult) { bResult = CheckTokenMembership(0, psidAdministrators, &bIsAdministrator); assert(bResult);
if (!bResult) { wsprintf(cString, TEXT("Error = %d"), GetLastError()); Message(TEXT("CheckForAdminPrivs::CheckTokenMembership"), E_FAIL, cString); } FreeSid(psidAdministrators); } else { wsprintf(cString, TEXT("Error = %d"), GetLastError()); Message(TEXT("CheckForAdminPrivs::AllocateAndInitializeSid"), E_FAIL, cString); }
return bIsAdministrator; }
|