VC如何判断当前进程处在Administrator权限下
2009-10-02 12:53
477 查看
#include <windows.h> #include <stdio.h> BOOL IsAdmin(void); int main(int argc, char* argv[]) { if (IsAdmin()) printf("IsAdmin - TRUE"); else printf("IsAdmin - FALSE"); return 0; } BOOL IsAdmin(void) { HANDLE hAccessToken; BYTE *InfoBuffer; PTOKEN_GROUPS ptgGroups; DWORD dwInfoBufferSize; PSID psidAdministrators; SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_NT_AUTHORITY; UINT i; BOOL bRet = FALSE; if(!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hAccessToken)) goto cleanup; InfoBuffer = new BYTE[1024]; if(!InfoBuffer) goto cleanup; bRet = GetTokenInformation(hAccessToken, TokenGroups, InfoBuffer, 1024, &dwInfoBufferSize); CloseHandle( hAccessToken ); if(!bRet) goto cleanup; if(!AllocateAndInitializeSid(&siaNtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0,0,0,0,0,0, &psidAdministrators)) goto cleanup; bRet = FALSE; ptgGroups = (PTOKEN_GROUPS)InfoBuffer; for(i=0;i<ptgGroups->GroupCount;i++) { if(EqualSid(psidAdministrators,ptgGroups->Groups[i].Sid)) { bRet = TRUE; break; } } FreeSid(psidAdministrators); cleanup: if (InfoBuffer) delete InfoBuffer; return bRet; }
相关文章推荐
- VC如何判断当前进程处在Administrator权限下
- VC如何判断当前进程处在Administrator权限下
- VC判断当前用户有无Administrator的权限(用EqualSid API函数判断与Admin是否在一个组的Sid)
- VC++中如何判断当前用户是否具有管理员权限
- vc判断当前用户是否具有administrator 权限代码
- VC判断进程是否具有administrator权限的方法
- VC判断当前用户有无Administrator的权限
- VC判断当前用户有无Administrator的权限
- 如何判断进程是否具有administrator权限
- 关于如何判断当前用户对文件有无写权限
- vc CListCtrl 如何判断列表中的内容是否被选中?如何获取CListCtrl当前选中的行
- 判断当前进程是否以管理员权限启动的
- VC 判断进程是否是以管理员权限运行,并且判断是否是用户进程而非服务进程
- VC++中如何获得一个当前进程的运行目录
- VC如何将自身进程提升至管理员权限
- 判断当前用户有无Administrator的权限
- 判断当前进程是否以管理员权限运行
- 如何判断当前进程是在32位/64位系统上运行
- VC++中如何获得一个当前进程的运行目录
- 如何提高当前进程的权限