Windows VC++提升当前进程权限到管理员权限

2023-12-16 17:30:39

Windows VC++提升当前进程权限

Windows VC++提升当前进程权限到管理员权限

有时候Windows下我们需要提升当前进程的权限到管理员权限,相关VC++代码如下:

#ifndef SAFE_CLOSE_HANDLE
#define SAFE_CLOSE_HANDLE(handle, defaultValue)	\
	{
		if (handle != defaultValue) {			\
			(void)::CloseHandle(handle);		\
			handle = defaultHandle;				\
		}										\
	}
#endif	// !SAFE_CLOSE_HANDLE

bool EnableDebugPrivilege()
{
    HANDLE handleToken = NULL; 
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handleToken)) {
    return false;
}

	LUID debugNameValue;
    if (!LookupPrivilegeValue(nullptr, SE_DEBUG_NAME, &debugNameValue) {
	  SAFE_CLOSE_HANDLE(handleToken, NULL);
	  return false;
}
    TOKEN_PRIVILEGES tokenPri;
    tokenPri.PrivilegeCount = 1;
    tokenPri.Privileges[0].Luid = debugNameValue;
    tokenPri.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    if (!AdjustTokenPrivileges(handleToken, FALSE, &tokenPri, sizeof(tokenPri), nullptr, )nullptr) {
    SAFE_CLOSE_HANDLE(handleToken, NULL);
	return false;  
}
    SAFE_CLOSE_HANDLE(handleToken, NULL);
    return true;
}

文章来源:https://blog.csdn.net/ccf19881030/article/details/135032701
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。