提权
在运行一些与系统相关的操作时,会因为权限不够无法使用,每次都已管理员运行比较麻烦现在用程序进行提权。
windows API函数:
OpenProcessToken 函数用来打开与进程相关联的访问令牌。
GetCurrentProcess 检索当前进程的伪句柄。
LookupPrivilegeValue 函数检索指定系统上使用的本地惟一标识符(LUID),用于本地表示指定的特权名称。
AdjustTokenPrivileges 函数启用或禁用指定访问令牌中的特权。
程序:
bool EnableDebugPrivilege()
{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) //获取访问令牌
{
return FALSE;
}
if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) //获取UID
{
CloseHandle(hToken);
return false;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL)) //进行提权
{
CloseHandle(hToken);
return false;
}
return true;
}