首页主机资讯提升进程的访问权限,在AdjustTokenPrivileges后返回错误13

提升进程的访问权限,在AdjustTokenPrivileges后返回错误13

时间2023-12-25 13:52:03发布访客分类主机资讯浏览352
导读:错误13表示权限被拒绝。要提升进程的访问权限,你需要使用特权令牌(privilege token)去请求提升的权限。下面是一个可以参考的代码示例: #include <Windows.h> #include <iostre...

错误13表示权限被拒绝。要提升进程的访问权限,你需要使用特权令牌(privilege token)去请求提升的权限。下面是一个可以参考的代码示例:

#include Windows.h>
    
#include iostream>


int main()
{
    
    HANDLE hToken;
    
    TOKEN_PRIVILEGES tokenPrivileges;
    
    LUID luid;
    

    // 打开当前进程的令牌
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &
hToken))
    {
    
        std::cout  "OpenProcessToken failed. Error: "  GetLastError()  std::endl;
    
        return 1;

    }
    

    // 获取SE_DEBUG_NAME的权限特权
    if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &
luid))
    {
    
        std::cout  "LookupPrivilegeValue failed. Error: "  GetLastError()  std::endl;
    
        return 1;

    }
    

    // 设置特权令牌
    tokenPrivileges.PrivilegeCount = 1;
    
    tokenPrivileges.Privileges[0].Luid = luid;
    
    tokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    

    // 提升进程权限
    if (!AdjustTokenPrivileges(hToken, FALSE, &
tokenPrivileges, sizeof(TOKEN_PRIVILEGES), NULL, NULL))
    {
    
        std::cout  "AdjustTokenPrivileges failed. Error: "  GetLastError()  std::endl;
    
        return 1;

    }
    

    std::cout  "Process access level has been elevated."  std::endl;
    

    return 0;

}
    

这个示例代码打开当前进程的令牌,获取了SE_DEBUG_NAME的权限特权,并使用AdjustTokenPrivileges函数提升进程权限。如果返回错误13,则表示权限被拒绝。可能是由于你没有足够的权限去提升进程权限,或者操作系统不允许进程提升权限。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 提升进程的访问权限,在AdjustTokenPrivileges后返回错误13
本文地址: https://pptw.com/jishu/579165.html
CreateFileMapping的用法 求IdentityHashMap顺序的问题

游客 回复需填写必要信息