降权启动进程

本文介绍了一个需求场景,即在管理员权限下安装完软件后,需要以普通用户身份启动程序,以避免程序因继承管理员权限而运行。解决方案是通过获取当前explorer.exe进程的令牌,来创建目标进程,从而实现非管理员权限的启动。
摘要由CSDN通过智能技术生成

需求:管理员启动了安装包并安装完后需要启动程序。此时希望是以当前登录用户来启动,而不是以管理员用户来启动(安装包是管理员权限,直接启动因为权限继承原因,程序也会是管理员权限)

思路:利用当前explorer.exe进程的token去创建目的进程

DWORD  GetExplorerToken(int nProcessId,OUT PHANDLE  phExplorerToken)
	{  
		DWORD       dwStatus = ERROR_FILE_NOT_FOUND ;   
		BOOL        bRet = FALSE ;  
		HANDLE      hProcess = NULL ;  
		HANDLE      hProcessSnap = NULL ;  
		TCHAR        szExplorerPath[MAX_PATH] = { 0 } ;  
		TCHAR        FileName[MAX_PATH] = { 0 } ;  
		PROCESSENTRY32 pe32 = { 0 } ;  
		__try  
		{  
			  
			hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS , 0 ) ;   
			if( hProcessSnap == INVALID_HANDLE_VALUE )    
			{  
				dwStatus = GetLastError() ;   
				__leave ;  
			}   
			pe32.dwSize = sizeof( PROCESSENTRY32 ) ;   
			if( !Process32First( hProcessSnap, &pe32 ))       
			{     
				dwStatus = GetLastError() ;   
				__leave ;   
			}   
			do {  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值