【问题标题】:how to check if user is admin in windows 7?windows 7下如何判断用户是否为管理员?
【发布时间】:2012-08-29 13:55:42
【问题描述】:

我在 msdn 中找到了这个link 来检查用户是否是管理员。当进程提升(以管理员身份运行)时,它在某些 win7 机器上工作正常,但我发现一些机器(一些 win 2008)无法正常工作! 这是正确的做法吗??

BOOL IsUserAdmin(VOID)
{
  BOOL b;
  SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
  PSID AdministratorsGroup; 
  b = AllocateAndInitializeSid(
    &NtAuthority,
    2,
    SECURITY_BUILTIN_DOMAIN_RID,
    DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0,
    &AdministratorsGroup); 
  if(b) 
  {
    if (!CheckTokenMembership( NULL, AdministratorsGroup, &b)) 
    {
      b = FALSE;
    } 
  FreeSid(AdministratorsGroup); 
  }
  return(b);
}    

【问题讨论】:

  • 这是一个类似的问题,可能是您的答案。 stackoverflow.com/questions/8139480/…
  • “不工作”没有帮助。更具体。
  • 不是真的,@Jordi。该问题是关于要求操作系统以管理员身份运行您的程序。这个问题是关于确定程序是否已经以管理员身份运行。

标签: c++ windows windows-7 sid


【解决方案1】:

您可以使用IsUserAnAdmin(),它是上述调用的包装器

【讨论】:

  • 对操作系统的支持有限,MSDN recommendsChecktokenMembership 支持这个。
  • 当然你是对的,但是上面的代码是 MSDN 示例,他/她要求它的正确性,所以可以使用系统提供的 API 来检查它。感谢您的留言
  • 不建议按照 msdn 调用此方法
  • 这仅适用于 Windows Vista,问题是关于 Windows 7
猜你喜欢
  • 2013-05-12
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 2020-02-06
  • 1970-01-01
相关资源
最近更新 更多