Windows判断是否为管理员

// IsUserAdminTest.cpp : Defines the entry point for the console application.
//

#include <Windows.h>
#include <tchar.h>
#include <iostream>
BOOL IsUserAdmin();

int _tmain(int argc, _TCHAR* argv[])
{
	printf_s("%d\n",IsUserAdmin());
	return 0;
}

BOOL IsUserAdmin()
{
	BOOL b = FALSE;
	SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
	PSID AdministratorsGroup = NULL;
	b = AllocateAndInitializeSid(
		&NtAuthority,
		2,
		SECURITY_BUILTIN_DOMAIN_RID,
		DOMAIN_ALIAS_RID_ADMINS,
		0, 0, 0, 0, 0, 0,
		&AdministratorsGroup);
	if(b)
	{
		HANDLE hThreadUserToken = NULL;
		if (!::OpenThreadToken(::GetCurrentThread(),
			TOKEN_READ,//must have TOKEN_QUERY
			false,
			&hThreadUserToken))
		{
			if (!CheckTokenMembership( hThreadUserToken, AdministratorsGroup, &b))
			{
				b = FALSE;
			}
			if (AdministratorsGroup)
			{
				FreeSid(AdministratorsGroup);
			}
		}
		if (hThreadUserToken)
		{
			CloseHandle(hThreadUserToken);
		}
	}
	return(b);
}

  

时间: 2024-08-27 13:41:33

Windows判断是否为管理员的相关文章

windows Service启动带有管理员权限的进程

事情是这样的,公司的产品有个守护进程(windows Service)需要启动产品的主程序exe,让主程序它运行为管理员权限(因为主程序会加载一个插件,插件中有列出端口监听的功能,需要由端口查找到进程PID,由进程PID查找进程名或进程镜像路径,这些对于一些特殊进程例如svchost需要有管理员权限才能查到进程名和路径).windows下的程序是不能在运行时获得管理员权限的,只能在创建进程的时候提升为管理员权限.如果是普通进程运行一个管理员权限程序,可以调用ShellExcute API.双击鼠

Qt开发程序在Windows 10应用需要管理员运行的解决思路

Qt开发程序在Windows 10应用需要管理员运行的解决思路 过了很长的时间没有发布博客了,但是我依然努力地开发Qt程序.目前呢,我发现开发Qt程序在Windows 10上有一个怪现象--有些程序右下角加上了盾牌的标志.那这个为什么呢? 原来是因为我的程序名称包含了Patch,结果就包含了加上了盾牌的标志.如果我去掉了Patch标志,盾牌就消失了.原来Windows对于文件名的一些敏感字,会选择性地做出一些防御操作.看来Windows 10在给我们安全的同时还给我们带来了"意想不到"

Windows 8提升普通管理员权限为超级管理员权限以及激活超级管理员Administrator

在Windows 8下运行某些操作时(比如删除一些文件或者更改某些系统设置时)系统会提示我们权限不够.须要Administrator账户的权限. 相信很多其它的使用者都会觉得自己当前使用的账户已经是系统中最大权限的全部者了,为什么还会来个Administrator的用户权限呢?其实,在Windows系列的操作系统上.超级管理员(也就是最大权限全部者)默认情况下都是Administrator,并且在XP.Windows 7上,刚装好系统后就有了一个账户,此账户便是超级管理员Administrato

Windows 2008 R2遗忘管理员密码后的解法

1.第一步使用Windows 2008 R2的安装光盘引导计算机启动.完成安装映像加载后,进入语言选择界面,此时,按下"Shift+F10",打开命令提示符界面,进入Windows目录所在分区,并定为到"Windows\System32"目录下. 2.第二步找到该目录下的"osk.exe"文件,并将其删除. 3.第三步将当前目录下的"cmd.exe"重命名复制为"osk.exe". 4.第四步重启计算机,点

Windows Server 2008遗忘管理员密码后的解决方法

思路是这样的:修改登录界面其他功能的链接,使之成为 CMD 的链接,在 CMD 命令里面定位到 C:\\Windows\System32 下,用 net user 去修改账号和密码 具体操作如下: 一.使用Windows Server 2008 R2的安装光盘引导计算机启动.完成安装映像加载后,进入语言选择界面,此时,按下"Shift+F10",打开命令提示符界面,进入Windows目录所在分区(若是默认安装Windows,并使用的"系统保留"分区,则为D盘),并定

windows 登录账户添加管理员权限

开发使用VS调试.删除文件等等时候总是遇到提示账户需要管理员权限,一般我们都是给账户添加管理员权限. 添加方法可参考百度:http://jingyan.baidu.com/article/47a29f2437e616c01423998b.html 这里记录遇到的一个问题:已经将用户账户添加到了Administrators组中,但是账户还是不具有管理员权限,WHY??? 解决方法:还是需要开启账户的属性中的管理员级别的访问权限. 控制面板->用户账户下的更改账户类型,在用户账户的用户界面,双击你的

windows 抓hash获取管理员密码

webshell 找能执行权限的目录上传 C:\Windows\System32\config\sam 内有windows 密码 利用工具把密码抓出来 samcopy 直接抓取 GetHASHES.exe $Local 返回当前系统所有的用户的哈希 pwdump7.exe 自动抓取哈希 都是用cmd 执行 来宾和system 一般都没有密码 wce.exe 自动抓哈希 Saminside 字典破解 破解sam密码 我一般用pwdump7 执行后返回 Administrator:500:7B59A

Windows设置Tomcat的管理员的用户和密码

我们首先打开Tomcat的配置文件,具体如下:(conf目录下的tomcat-users.xml) 删除原有的<tomcat-users>,加入如下代码 <tomcat-users> <role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <role rolename=&q

C#判断程序是否以管理员运行

  /// <summary>         /// 判断程序是否是以管理员身份运行.         /// </summary>         public static bool IsRunAsAdmin()         {             WindowsIdentity id = WindowsIdentity.GetCurrent();             WindowsPrincipal principal = new WindowsPrincipa