⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objectkill.h

📁 使用驱动技术可以关闭任意指定进程提升应用程序权限
💻 H
字号:
#include <string.h>
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#pragma comment(lib,"kernel32.lib")
#include <WinBase.h>

//提权
BOOL UpdateProcessPrivilege(HANDLE hProcess);

//工作关联结束进程
LONG ObjectKill(LONG dwProcessID);

LONG ObjectKill(LONG dwProcessID)
{
	UpdateProcessPrivilege(GetCurrentProcess());
	BOOL res = FALSE;
	HANDLE hjob = CreateJobObject(NULL,TEXT("KillProcess"));
	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,0,dwProcessID);

	if(hProcess == NULL)
	{
	printf("Open The Process Error!\n");
	return 0;
	}

	AssignProcessToJobObject(hjob,hProcess);
	res = TerminateJobObject(hjob,0);
	if(res == FALSE)
		printf("\nSorry, You cannot kill the process!");
	else 
		printf("\nOK! Now The Process has been Killed!");
	getch();
	return 0;
}

//修改当前进程权限
BOOL UpdateProcessPrivilege(HANDLE hProcess)
// hProcess  : 要提升的进程,目标进程
// lpPrivilegeName : 要提升到的特权,目标特权
// 返回值 : TRUE : 成功; FALSE : 失败
{
	HANDLE hToken;
	if ( OpenProcessToken( hProcess, TOKEN_ALL_ACCESS, &hToken ) ) {
		
		LUID destLuid;
		if ( LookupPrivilegeValue( NULL,SE_DEBUG_NAME, &destLuid ) ) {
			
			TOKEN_PRIVILEGES TokenPrivileges;
			TokenPrivileges.PrivilegeCount = 1;
			TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
			TokenPrivileges.Privileges[0].Luid = destLuid;
			//通知OS修改权限
			int iResult;
			if ( iResult = AdjustTokenPrivileges(hToken, FALSE, &TokenPrivileges, 
				0, NULL, NULL) ) 
			{				
				return TRUE;				
			}
		}
	}
	
	return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -