VC判断当前用户有无Administrator的权限(用EqualSid API函数判断与Admin是否在一个组的Sid)


[cpp]
 view plain copy

print?

  1. /************************************************************************/
  2. /* 函数说明:判断有无Administrator的权限
  3. /* 参    数:无
  4. /* 返 回 值:成功返回TRUE,否则返回FALSE
  5. /* By:Koma   2009.07.28 23:30
  6. /************************************************************************/
  7. BOOL IsAdmin()
  8. {
  9. HANDLE hAccessToken;
  10. BYTE * InfoBuffer = new BYTE[1024];
  11. PTOKEN_GROUPS ptgGroups;
  12. DWORD dwInfoBufferSize;
  13. PSID psidAdministrators;
  14. SID_IDENTIFIER_AUTHORITY siaNtAuthority = SECURITY_NT_AUTHORITY;
  15. if(!OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY,&hAccessToken))
  16. {
  17. delete InfoBuffer;
  18. return FALSE;
  19. }
  20. if(!GetTokenInformation(hAccessToken,TokenGroups,InfoBuffer,1024,&dwInfoBufferSize))
  21. {
  22. delete InfoBuffer;
  23. CloseHandle(hAccessToken);
  24. return FALSE;
  25. }
  26. CloseHandle(hAccessToken);
  27. if(!AllocateAndInitializeSid(&siaNtAuthority,
  28. 2,
  29. SECURITY_BUILTIN_DOMAIN_RID,
  30. DOMAIN_ALIAS_RID_ADMINS,
  31. 0,0,0,0,0,0,
  32. &psidAdministrators))
  33. {
  34. delete InfoBuffer;
  35. return FALSE;
  36. }
  37. ptgGroups = (PTOKEN_GROUPS)InfoBuffer;
  38. for(UINT i = 0; i < ptgGroups->GroupCount; i++)
  39. {
  40. if(EqualSid(psidAdministrators,ptgGroups->Groups[i].Sid))
  41. {
  42. FreeSid(psidAdministrators);
  43. delete InfoBuffer;
  44. return TRUE;
  45. }
  46. }
  47. return FALSE;
  48. }

http://blog.csdn.net/wangningyu/article/details/4389546

时间: 2024-10-12 14:18:15

VC判断当前用户有无Administrator的权限(用EqualSid API函数判断与Admin是否在一个组的Sid)的相关文章

判断程序是否运行在管理员权限下

1.提出两个概念(成立条件是系统是Vista后续版本,这是因为引入了UAC) 一个是运行程序的账号是管理员账号 另一个是当前运行环境是管理员环境 2.判断程序是否运行在管理员权限,直接使用函数IsUserAnAdmin就可以判断 #include <ShlObj.h> #include <tchar.h> int _tmain() { BOOL bIsAdmin = IsUserAnAdmin(); if(bIsAdmin) _tprintf_s(_T("Run As a

shell脚本中实现自动判断用户有无密码

在最近完成老师布置的作业的时候遇到了如何让shell脚本中的命令自动判断一个用户是否已设置密码的问题,虽然看似不是很难的一个问题,但是在这一功能实现的过程中却包含了许多细小的而重要的知识.刚开始小编对此很是头疼,虽然我们查看一个用户是否有密码并不是很难,直接cat /etc/shadow这个文件看看密码位是否有加密的字符就行了,但是让命令自己去判断和匹配就不是很顺利了,小编上网查看后,并没有得到很好的答案,大多数都是人工查看的答案,并不适用于shell脚本中自动的判断,所以在认真对比/etc/p

JS 端判断当前用户是否在某个SharePoint group (包含用户在AD组,然后将AD组加入到SP的组的情况)

本文讲述 JS 端如何判断当前用户是否在某个SharePoint group (包含用户在AD组,然后将AD组加入到SP的组的情况). 笔者曾经总结过JS端判断用户权限的三种方式: http://blog.csdn.net/abrahamcheng/article/details/17447479 但是实际需求中判断某个用户是否在哪个组是非常常见的,正如前面文章中所说,JS端判断当前用户是否在哪个组,只适用用于将用户直接加到SP group这种情况,针对用户在AD组,然后将AD组加入到SP的组的

怎么实现一个:判断指定进程有无响应的功能函数. (转)

/* 怎么实现一个:判断指定进程有无响应的功能函数. 已知条件为:一个进程ID,求这个进程有无响应;用VC平台实现. 我在网络查找一些资料,copy后得出以下一个程序,但不能检测出结果,运行时会出错. 接触C++不是很长时间,希望大家能帮帮我,解决这个问题,谢谢. 如果还有其它方法,请给予提示.谢谢.  */ /////////////////////////////////////////////////////////////////////////////// #include <wind

vue-router如何根据不同的用户给不同的权限

闲聊: 小颖去年在上家公司用的vue1.0之前在做路由这块用的router.map,但是现在vue2.0里已经不能用了,所以之前解决权限问题的例子,小颖也参考不了呜呜 之前看一个美女写的:elememtui(有关权限的那些事) 小颖也想试试怎么根据不同的用户,给不同的访问菜单权限,昨天下午小颖试了好久,都没弄好,用户刚登陆进去菜单栏是好的,但是当页面一刷新,左侧的菜单就不见了,但当小颖点击了别的地方后,左侧的菜单栏又能出来了,阿西吧擦,昨天折腾了小颖一下午,在下班前还是没弄好,回去因为才搬了家房

通用权限管理系统如何进行角色判断

面对多个子系统,每个子系统中设置的角色都不一样,如何判断某个用户具有某个角色呢?通用权限系统中提供了一个方法,下面是使用角色接口来实现的判断. #region public static List<BaseRoleEntity> GetCacheRoleList(BaseUserInfo userInfo, bool refreshFlag = false) 获取用户角色 缓存 /// <summary> /// 获取用户角色 缓存 /// </summary> ///

Android -- 程序判断手机ROOT状态,获取ROOT权限

判断手机是否具有ROOT权限                                                            /** * 判断手机是否ROOT */ public boolean isRoot() { boolean root = false; try { if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exi

域内计算机迁移到其他域,自动脚本运行,继承原用户配置文件、管理员权限不变

因一个公司收购另外一个公司,现需要把被收购公司的计算机迁移到收购公司域内,要求用户配置文件不变,计算机名重新编辑,用户继承本地管理员权限使用了DefProf.exe迁移配置文件使用了netdom.exe迁移域使用了数据库自动计算机名更改,并抓取计算机信息到数据库 脚本如下: @echo off color 0Acls copy CDGAMED.ps1 C:\tmpcopy CDGAMEL.ps1 C:\tmpcopy zhuaqu.ps1 C:\tmpcopy netdom.exe C:\Win

域控环境下调用本地管理员administrator账户权限,IP地址自动获取

1.最近搬新公司 IP地址都是要自动获取,现状是800台电脑IP地址都是手动配置好.需要把每台电脑改成自动获取,域用户账户users没有权限改网卡设置,需要IT手动改掉.2.针对此情况做了一个批处理调用计算机本地管理员权限达成IP地址自动获取.(前期考虑调用域管理员权限因为搬迁后连不到域控上无法验证域控信息会有风险,具体没测试过)3.本次使用的是lsrunase.exe,把软件放在和批处理同一个文件目录下 批处理ipdnslsrunase.bat:lsrunase.exe /user:admin