这三个函数主要用来提升进程的权限 
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. 如何修改CSV文件的分隔符

    Excel转成CSV文件,在Windows下默认的列表分隔符是逗号(,).在某些情况下,我们可能需要更改列表分隔符,如某个单元格内容包含逗号,而这可能导致使用它的程序出错,这样就需要更改列表分隔符:再 ...

  2. 学习笔记之pandas

    Python Data Analysis Library — pandas: Python Data Analysis Library https://pandas.pydata.org/ panda ...

  3. TF-IDF算法原理

    原文:https://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2595249.html TF-IDF(term frequency–inverse ...

  4. 用wiershark抓dns数据包

    wireshark是非常好的抓包工具,捕获工具也很强大.比如说我只要抓dns数据包,其他数据包全部丢弃. 步骤如下: 选择菜单->捕获-捕获接口-输入-所选择接口的捕获过滤器:port 53 1 ...

  5. CentOS之RPM

    yum工具比RPM工具好用,所以直接介绍yum工具来管理RPM包. yum list |head -n 20 列出所有RPM资源. yum search vim  搜索RPM包vim yum inst ...

  6. virtualbox创建虚拟机

    两种方式: 1.使用.vdi硬盘镜像文件 2.使用操作系统新建 方法1: #结束! 方法2:

  7. 第16课 右值引用(3)_std::forward与完美转发

    1. std::forward原型 template <typename T> T&& forward(typename std::remove_reference< ...

  8. python读写json+字典保存

    解决方案 json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps()和 json.loads() , 要比其他序列化函数库如pickle的接口少得多 ...

  9. vue 整合element-ui

    本文主要介绍如何在vue框架中结合elementUI. 本文主要参考: http://element-cn.eleme.io/#/zh-CN/component/quickstart   1.阅读本文 ...

  10. python-ddt 数据驱动测试

    # @File : learn_ddt.py #-*- coding:utf-8 -*- #本次学习:ddt ---data drive test--数据驱动测试 #1.安装 pip install ...