vista下怎样判断用户为系统管理员,xp下的方法用到vista下根本不行.
解决方案 »
- 局域网中P2P视频直播(摄像头采集)
- mouse_event与SendMessage的区别
- 在HTMLVIEW上来显示HTML的问题。
- 如何列出 Active Directory中全部用户?
- 请问窗口拖动的时候发生什么事件呢?
- 替我们市场总监发的欲觅技术总监/资深经理/项目经理/系统分析员/系统设计员/程序员(测试员就不要来了)的征友启事★★★★★
- 如何看懂别人写的例子,也不知道入门没有?
- 请问访问vsd文件要用什么软件?
- 我有一个用hook截获鼠标移动的dll,但是没有效果,请问怎么调试?
- 跟踪自已的程序如何不进入MFC的代码?
- 隐藏 CDialog 主窗口
- time定时器会不会影响程序速度
#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;
}