zoukankan      html  css  js  c++  java
  • 提升本程序进程优先级和权限

     

    /****************************************************************
    本类功能:提升本程序进程优先级和权限
    编写作者:Coderui
    编写日期:2008年03月24日
    联系邮箱:
    作者博客:http://hi.baidu.com/coderui
    文件名称:EnablePriv.h
    ****************************************************************/

    class CEnablePriv
    {
    public:            //公有(对外开放的接口)

        //
        //设置当前进程优先级为最高(实时)
        //
        BOOL SetRealTimePriority();

        //
        //调整当前进程权限函数
        //
        BOOL AdjustPrivilege(LPCTSTR lpName, BOOL bEnable)

    private:           //私有(内部使用的接口)

    };


    /****************************************************************
    本类功能:提升本程序进程优先级和权限
    编写作者:Coderui
    编写日期:2008年03月24日
    联系邮箱:
    作者博客:http://hi.baidu.com/coderui
    文件名称:EnablePriv.cpp
    ****************************************************************/

    #include "stdafx.h"
    #include "EnablePriv.h"

    //宏的功能介绍:
    //-------------------------------------------------------------
    //#define            SE_BACKUP_NAME               TEXT("SeBackupPrivilege")     //备份数据权限
    //#define            SE_RESTORE_NAME              TEXT("SeRestorePrivilege")    //恢复数据权限
    //#define            SE_SHUTDOWN_NAME             TEXT("SeShutdownPrivilege")   //关机权限
    //#define            SE_DEBUG_NAME                TEXT("SeDebugPrivilege")      //读、写控制权限
    //-------------------------------------------------------------

    //宏的功能介绍:
    //-------------------------------------------------------------
    //ABOVE_NORMAL_PRIORITY_CLASS(0x00008000)   高于标准
    //BELOW_NORMAL_PRIORITY_CLASS(0x00004000)   低于标准
    //HIGH_PRIORITY_CLASS(0x00000080)           高
    //IDLE_PRIORITY_CLASS(0x00000040)           低
    //NORMAL_PRIORITY_CLASS(0x00000020)         标准
    //REALTIME_PRIORITY_CLASS(0x00000100)       实时
    //-------------------------------------------------------------

     

    //
    //设置当前进程优先级为最高(实时)
    //
    //返回值:“FALSE”是失败,“TRUE”是成功。
    BOOL CEnablePriv::SetRealTimePriority()
    {
        if( ! SetPriorityClass( GetCurrentProcess(), REALTIME_PRIORITY_CLASS ))
        {
            return false;
        }

    return true;
    }

     

    //
    //调整当前进程权限函数
    //
    //返回值:“FALSE”是失败,“TRUE”是成功。
    BOOL CEnablePriv::AdjustPrivilege(LPCTSTR lpName, BOOL bEnable)
    {
        HANDLE hToken;
        LUID sedebugnameValue;
        TOKEN_PRIVILEGES tkp;
        BOOL bret = FALSE;

        if (OpenProcessToken( GetCurrentProcess(),
             TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken ))
        {
             if (LookupPrivilegeValue( NULL, lpName, &sedebugnameValue ))
            {
                tkp.PrivilegeCount = 1;
                tkp.Privileges[0].Luid = sedebugnameValue;
                tkp.Privileges[0].Attributes = (bEnable ? SE_PRIVILEGE_ENABLED: SE_PRIVILEGE_REMOVED);

                bret = AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL);
            }

            CloseHandle( hToken );
        }

        return bret;
    }

     

     

     

  • 相关阅读:
    国债预发行
    解决GDI+的DrawString绘制带有偏移的问题
    大数据量下查询显示优化方案小结
    《提高C++性能的编程技术》 读书笔记
    基金TA系统简介
    关于做对和做好的一点思考
    调试网络断线工作心得
    双目视觉简介
    PCL中outofcore模块---基于核外八叉树的大规模点云的显示
    深度相机Astra Pro测试教程
  • 原文地址:https://www.cnblogs.com/huhu0013/p/3276578.html
Copyright © 2011-2022 走看看