只能在vista及以上有效
BOOL RunAsAdmin(HANDLE hProcess)
{
BOOL isAdmin = FALSE;
HANDLE hToken = NULL;
BOOL retValue = OpenProcessToken(hProcess,TOKEN_QUERY,&hToken);
if(!retValue)
return isAdmin;
TOKEN_ELEVATION tokenEle;
DWORD eleLen = sizeof(TokenElevation);
DWORD retLen = 0;
retValue = GetTokenInformation(hToken,
TokenElevation,&tokenEle,eleLen,&retLen);
wprintf(TEXT("retLen:%ld\n"), retLen);
if(retValue && retLen == eleLen)
isAdmin = TRUE;
CloseHandle(hToken);
return isAdmin;
}
int main()
{
HANDLE p = OpenProcess(PROCESS_QUERY_INFORMATION,
FALSE,2488);
if(p && RunAsAdmin(p)){
wprintf(TEXT("runas admin\n")) ;
}
return 0;
}