这三个函数主要用来提升进程的权限 
1 OpenProcessToken()函数:获取进程的令牌句柄 
OpenProcessToken的原型. 
BOOL WINAPI OpenProcessToken( 
__in HANDLE ProcessHandle, 
__in DWORD DesiredAccess, 
__out PHANDLE TokenHandle 
); 
第一个参数 进程句柄(当前进程为GetCurrentProcess()为参数) 
第二个参数 访问令牌特权(可以参考msdnhttps://msdn.microsoft.com/zh-cn/library/aa374905) 
第三个参数 令牌句柄 返回的参数 就是AdjustTokenPrivileges的第一个参数 
2LookupPrivilegeValue()函数: 
在认识这个函数之前我们需要了解一下结构体 
TOKEN_PRIVILEGES结构体 
typedef struct _TOKEN_PRIVILEGES 

DWORD PrivilegeCount; 
LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; 
}TOKEN_PRIVILEGES; 
第一个参数是个特权数组。 
第二个参数是要修改的特权数目 
LUID_AND_ATTRIBUTES 结构体 
typedef struct _LUID_AND_ATTRIBUTES 

LUID Luid; 
DWORD Attributes; 
} LUID_AND_ATTRIBUTES;

LookupPrivilegeValue的原型 
BOOL WINAPI LookupPrivilegeValue( 
__in_opt LPCTSTR lpSystemName, 
__in LPCTSTR lpName, 
__out PLUID lpLuid 
); 
第一个参数是系统的名字,如果为NULL,就是本地名字(这里就填NULL) 
第二个参数是特权的名字,要查看详细特权,在这里写SE_DEBUG_NAME 
第三个参数就可以通过指针返回一个LUID类型的Luid的标识了。 通过这个值就可以填入刚才的结构体里了。 
3 AdjustTokenPrivileges()函数 
BOOL WINAPI AdjustTokenPrivileges( 
__in HANDLE TokenHandle, 
__in BOOL DisableAllPrivileges, 
__in_opt PTOKEN_PRIVILEGES NewState, 
__in DWORD BufferLength, 
__out_opt PTOKEN_PRIVILEGES PreviousState, 
__out_opt PDWORD ReturnLength 
); 
第一个参数为OpenProcessToken第三个指针参数传出的句柄值 
第二个参数为是否禁用所有所有的特权(这里填false) 
第三个参数为新的TOKEN_PRIVILEGES的特权结构体指针 
第四个参数是上面结构体的字节长度(sizeof) 
第五个参数是 接受原先的特权的结构体 
第六个参数也是这个结构体的字节长度的指针

最后要记得调用CloseHandle()函数 
我们可以将上述函数组合为一个方法

void EenableDebugPriv()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[].Luid);
tkp.PrivilegeCount = ;
tkp.Privileges[].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, ,(PTOKEN_PRIVILEGES)NULL, );
CloseHandle( hToken );
}

这样就可以修改相关进程的权限了

原贴地址:https://blog.csdn.net/cxq_1993/article/details/48053997

windowsAPI之OpenProcessToken,AdjustTokenPrivileges 和LookupPrivilegeValue<转>的更多相关文章

  1. <转载>提升程序的特权(AdjustTokenPrivileges)

    首先列出需要的函数 1.OpenProcessToken 2.AdjustTokenPrivileges 3. LookupPrivilegeValue ----------------------- ...

  2. 提升程序的特权(AdjustTokenPrivileges)

    首先列出需要的函数 1.OpenProcessToken 2.AdjustTokenPrivileges 3. LookupPrivilegeValue ----------------------- ...

  3. windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)

    对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...

  4. [转载]提升进程权限-OpenProcessToken等函数的用法

    GetCurrentProcessID 得到当前进程的ID OpenProcessToken 得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限 AdjustTokenPriv ...

  5. OpenProcessToken令牌函数使用方法

    >GetCurrentProcessID 得到当前进程的ID OpenProcessToken得到进程的令牌句柄LookupPrivilegeValue 查询进程的权限AdjustTokenPr ...

  6. [转]远程注入DLL : 取得句柄的令牌 OpenProcessToken()

    http://hi.baidu.com/43755979/blog/item/3ac19711ea01bdc4a6ef3f6a.html 要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关 ...

  7. AdjustTokenPrivileges启用权限

    原文链接地址:http://blog.csdn.net/xbgprogrammer/article/details/7276760    我们有很多操作需要用到OpenProcess函数,而为了使程序 ...

  8. 程序的开机关机重启,开机启动,休眠功能delphi实现(使用AdjustTokenPrivileges提升权限)

    TShutDownStatus = (sdShutDown,sdReboot,sdLogOff,sdPowerOff); procedure ShutDown(sdStatus : TShutDown ...

  9. WindowsAPI调用和OCR图片识别

    傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...

随机推荐

  1. java1.8新特性(四 创建 stream对象)

    java1.8 提供了 stream对象 可以用作 对 集合 数组的 一系列操作,都是基于lambda 表达式 ,所以得先熟悉lambda 表达式 集合创建stream对象 // 1.集合创建stre ...

  2. 量化交易(Quantitative Trading)

    什么是量化交易 量化交易是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式.量化交易从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,用数量模型验证及固化这些规律 ...

  3. folly无锁队列,尝试添加新的函数

    1. folly是facebook开源的关于无锁队列的库,实现过程很精妙.folly向队列中添加节点过程,符合标准库中的队列的设计,而取出节点的过程,则会造成多个线程的分配不均.我曾经试着提供一次 取 ...

  4. [UE4]在AIController中使用行为树

     行为树会在Root根下面的每个子节点中从左右到右来回往复循环执行.

  5. (error) MOVED 5798 172.17.0.3:6379

    登录没有启动集群模式(即缺少了那个"-c"): redis-cli -c -h yourhost -p yourpost

  6. ip route 命令详解

    linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命 ...

  7. javascript-回归原生基础

    //添加事件监听兼容函数 function addHandler(target, eventType, handler){ if(target.addEventListener){//主流浏览器 ad ...

  8. ZooKeeper系列(5):管理分布式环境中的数据

    引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知 识,理解起来比较抽象所以还需要借助一些应用场景,来帮我 ...

  9. 深入理解Apache Flink

    Apache Flink(下简称Flink)项目是大数据处理领域最近冉冉升起的一颗新星,其不同于其他大数据项目的诸多特性吸引了越来越多人的关注.本文将深入分析Flink的一些关键技术与特性,希望能够帮 ...

  10. async 常用函数总结

    待更新. waterfall auto(神器) parallel mapSeries(数据库多条记录操作神器)