• 提升本程序进程优先级和权限


     

    /****************************************************************
    本类功能:提升本程序进程优先级和权限
    编写作者: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;
    }

     

     

     

  • 相关阅读:
    【JS】深拷贝与浅拷贝的区别,实现深拷贝的几种方法(讲的非常容易理解哦)
    关于splice()方法,slice() 、split()方法讲解,reverse()方法、replace()方法
    js面向对象高级编程
    js面向对象的几种设计模式,以及实现继承的几种方式
    解析Vue2.0和3.0的响应式原理和异同(带源码)
    总结js的几种数据类型检测方法
    javascript中Array常用方法,以及String的常用方法处理
    从输入URL到浏览器显示页面发生了什么,一个完整的http请求过程
    web前端如何防范安全攻击
    前端seo优化总结
  • 原文地址:https://www.cnblogs.com/huhu0013/p/3276578.html
Copyright © 2020-2023  润新知