Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调整非特权帐户(C、Windows)上的令牌_C_Windows_Debugging_Privileges - Fatal编程技术网

调整非特权帐户(C、Windows)上的令牌

调整非特权帐户(C、Windows)上的令牌,c,windows,debugging,privileges,C,Windows,Debugging,Privileges,我正在使用下面的代码(这是MSDN中的一个稍加修改的示例)来检查我是否对某个进程具有调试权限。如果我不这样做,我就试着设置它们 int SetDebugPriv() { HANDLE TokenHandle; LUID lpLuid; TOKEN_PRIVILEGES NewState; if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle)) {

我正在使用下面的代码(这是MSDN中的一个稍加修改的示例)来检查我是否对某个进程具有调试权限。如果我不这样做,我就试着设置它们

int SetDebugPriv()
{
    HANDLE TokenHandle;
    LUID lpLuid;
    TOKEN_PRIVILEGES NewState;

    if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &TokenHandle))
    {
        //failed
        return 0;
    }

    if(!LookupPrivilegeValue(NULL, "SeDebugPrivilege" , &lpLuid))
    {
        //failed
        CloseHandle(TokenHandle);
        return 0;
    }

    NewState.PrivilegeCount = 1;
    NewState.Privileges[0].Luid = lpLuid;
    NewState.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    if(!AdjustTokenPrivileges(TokenHandle, FALSE, &NewState, sizeof(NewState), NULL, NULL))
    {
        //failed
        CloseHandle(TokenHandle);
        return 0;
    }

    CloseHandle(TokenHandle);
    return 1;
}
现在,在Windows XP和2003上的特定帐户下,我在尝试设置令牌时遇到一个拒绝访问错误。我的猜测是,我无法设置特定的令牌,因为我没有权限这样做。 如何在非管理员帐户或权限较低的帐户上设置调试令牌

代码是赞赏的


谢谢

你不能。如果可以的话,这将是一个巨大的安全漏洞(SeDebugPrivilege比管理员更有魔力)

AdjustTokenPrivileges启用令牌拥有但未启用的特权。例如,SeShutdownPrivilege就是其中之一

您必须将权限添加到用户帐户,然后用户必须注销并再次登录(以获得具有该权限的新令牌)

要以编程方式向用户帐户添加权限,请从以下内容开始: