为编写的Windows程序提升权限

1.要求以管理员身份运行

在vs工程属性中,Linker ---> Manifest File---> UAC Execution Level,选择requireAdministrator (/level=‘requireAdministrator‘)选项

2.在main函数开始时运行以下函数代码:

BOOL WINAPI EnablePrivileges()
{
	HANDLE hToken;
	TOKEN_PRIVILEGES tkp;   

	if (!OpenProcessToken(GetCurrentProcess(),
		TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
		return( FALSE );   

	LookupPrivilegeValue(NULL, SE_DEBUG_NAME,
		&tkp.Privileges[0].Luid);   

	tkp.PrivilegeCount = 1;
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;   

	AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
		(PTOKEN_PRIVILEGES)NULL, 0);   

	if (GetLastError() != ERROR_SUCCESS)
		return FALSE;   

	return TRUE;
} 

为编写的Windows程序提升权限,布布扣,bubuko.com

时间: 2024-12-17 20:38:40

为编写的Windows程序提升权限的相关文章

【API】Windows 程序提升权限函数

BOOL EnableShutdownPrivilege() { HANDLE hProcess = NULL; HANDLE hToken = NULL; LUID uID = {0}; TOKEN_PRIVILEGES stToken_Privileges = {0}; hProcess = ::GetCurrentProcess(); //获取当前应用程序进程句柄 if(!::OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken

编写的windows程序,崩溃时产生crash dump文件的办法

一.引言 dump文件是C++程序发生异常时,保存当时程序运行状态的文件,是调试异常程序重要的方法,所以程序崩溃时,除了日志文件,dump文件便成了我们查找错误的最后一根救命的稻草.windows程序产生dump文件和linux程序产生dump文件的方式不一样,linux默认是不让产生core dump文件,只要在用户自己的~/.bash_profile文件中增加 ulimit -S -c unlimited > /dev/null 2>&1 这样程序崩溃就可以产生可调试的core d

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

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

Windows应用程序运行权限设置

在Vista以后的windows版本中,有些时候需要提升编译后生成程序的权限,即希望让生成的程序以管理员身份运行.虽然在一般情况下,可以使用鼠标右键选择的方式来强行以管理员身份运行,但它并没有屏蔽普通运行方式,而且普通人通常也不会使用右键选择以管理员身份运行,所以必须在生成程序时就限定程序只能以管理员方式来运行. 先简单说一下,在Vista以后的windows版本中,微软引入了UAC机制,它的目的是防止程序对操作系统本身进行恶意篡改.要让程序以管理员身份运行,就需要在程序中引入UAC标注,也即让

windows程序员C/C++转向linux程序员时,如何编写、调试linux程序

windows程序员使用vs或windbg进行调试相当熟悉,转到linux下面,要进行程序的编写.调试,往往非常痛苦(或者说不习惯吧).目前可以找到的各种IDE或编辑软件相当多,我试过的有eclipse+cdt+gdb,codeblock+gdb,vi+cgdb,都是不太理想,时不时的想往vs上靠,一直还是有vs的情结. 某日,正在查找gdb如何显示当前进程加载的动态库时,查到了visualgdb中关于gdb的教程,此时猛然想起了visualgdb这个工具(原来在用visualddk的时候瞧见过

Inno Setup打包的程序提升为管理员权限

Inno Setup打包的程序在Win7 64位系统上安装,安装步骤最后一步若选中运行程序,会跳出一个错误提示框. 这是因为64位win7系统运行程序时需要管理员权限,而打包的文件并没有这个权限就试图直接运行. 解决的办法网上有很多,但都说的不具体.如http://www.cnblogs.com/walker-lc/articles/3470679.html 添加管理员权限 1.在[Setup]节点添加 PrivilegesRequired=admin 2.进入安装目录,找到文件SetupLdr

关于编写Windows程序中启动兼容性问题

之前用qt4编写Windows程序的时候遇到了一个软件在系统的兼容性问题:用户在win10系统下使用这个程序的时候,如果没有用低于win10版本的兼容模式运行的时候,存在运行某部分功能的时候无法使用的问题. 这个问题一开始困扰了我很久,那时我认为的解决方案有两种: 1.将软件从qt4迁移到qt5上 不过在对软件的大小是有限制的,之所以一开始用qt4写这个项目是因为qt4的模块相对于qt5来说小很多,因此这个方案被我否决了 2.程序自启动的时候将系统兼容性设置为win10以下的版本类型 在否决了第

golang windows程序获取管理员权限(UAC )

在windows上执行有关系统设置命令的时候需要管理员权限才能操作,比如修改网卡的禁用.启用状态.双击执行是不能正确执行命令的,只有右键以管理员身份运行才能成功.为解决此问题,花了很长时间找了各种方法,最终找到一个简单的方法,双击也能执行成功了.过程如下:1> Go get github.com/akavel/rsrc2> 把nac.manifest 文件拷贝到当前windows项目根目录3> rsrc -manifest nac.manifest -o nac.syso4> go

为自己编写的windows应用程序制作安装包

1 写好了一个windows程序之后如何制作安装包 这个在vs中就可以直接发布了,可以制作msi的安装包和exe的安装包. 2 window应用程序安装包做了哪些事情 rpm安装包的话,只是把相应的文件拷贝到不同的目录.那么window安装包做了什么呢? msi里面有一个table,里面是一条条的指令,windows installer会解释并执行这些指令. 它还是会把安装包里面的文件拷贝到相应的目录.关键是它除了拷贝还做了哪些事情呢? 3 安装包除了把相应的文件放到不同的目录下,还做了哪些事情