近来找到一个进程监控小工具,想学习一下,蛮不错的。用VC6.0编译没有问题,但是运行也就是调试时却说could not set SeDebugPrivilege some options may not work。关于这个我也找到了一段用于提升权限的代码,看着应该对的,但是我还是不知道该如何做,希望你们能帮帮我,非常感谢!

解决方案 »

  1.   

    在开始的时候提升,DebugPrivilege(SE_DEBUG_NAME, TRUE); 在结束的时候还原,DebugPrivilege(SE_DEBUG_NAME, FALSE); bool DebugPrivilege(const char *PName,BOOL bEnable)
    {
    BOOL              bResult = TRUE;
    HANDLE            hToken;
    TOKEN_PRIVILEGES  TokenPrivileges;

    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken))
    {
    bResult = FALSE;
    return bResult;
    }
    TokenPrivileges.PrivilegeCount = 1;
    TokenPrivileges.Privileges[0].Attributes = bEnable ? SE_PRIVILEGE_ENABLED : 0;

    LookupPrivilegeValue(NULL, PName, &TokenPrivileges.Privileges[0].Luid);
    AdjustTokenPrivileges(hToken, FALSE, &TokenPrivileges, sizeof(TOKEN_PRIVILEGES), NULL, NULL);
        if (GetLastError() != ERROR_SUCCESS)
    {
    bResult = FALSE;
    }

    CloseHandle(hToken);
    return bResult;
    }