我用
LookupPrivilegeValue
AdjustTokenPrivileges
两个函数将进程优先级提高到了 SE_DEBUG_NAME
可是我发现无论怎样优先级降都不下来
如下:    tp.PrivilegeCount = 1;
    tp.Privileges[0].Luid = luid;
    tp.Privileges[0].Attributes = 0;    AdjustTokenPrivileges(hToken,FALSE,&tp,NULL,NULL,NULL);请问怎么解决?

解决方案 »

  1.   

    这些函数是调整权限的,和优先级没关系的。static BOOL EnableDebugPrivilege(void)
    {
        HANDLE  hToken;
        BOOL    fOk=FALSE;
        if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
        {
            TOKEN_PRIVILEGES    tp;
            tp.PrivilegeCount=1;
            if(!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid));        //MessageBox(NULL,"Can't lookup privilege value.",NULL,MB_OK|MB_ICONWARNING);
            tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
            if(!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL));        //MessageBox(NULL,"Can't adjust privilege value.",NULL,MB_OK|MB_ICONWARNING);
            fOk=(GetLastError() == ERROR_SUCCESS);
            CloseHandle(hToken);
        }    return fOk;
    }static BOOL DisableDebugPrivilege(void)
    {
        HANDLE  hToken;
        BOOL    fOk=FALSE;
        if(OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken))
        {
            TOKEN_PRIVILEGES    tp;
            tp.PrivilegeCount=1;
            if(!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid));        //MessageBox(NULL,"Can't lookup privilege value.",NULL,MB_OK|MB_ICONWARNING);
            tp.Privileges[0].Attributes=0;
            if(!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL));        //MessageBox(NULL,"Can't adjust privilege value.",NULL,MB_OK|MB_ICONWARNING);
            fOk=(GetLastError() == ERROR_SUCCESS);
            CloseHandle(hToken);
        }    return fOk;
    }呵呵,不知道对不对。