这三个函数主要用来提升进程的权限 
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. 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。System.Threading.ThreadAbortException

    第一次遇到这样的错误 错误语法 try{ Response.Redirect("aa.aspx"); }catch (Exception ex){ Response.Redirec ...

  2. tools、site

    notepad editer fiddler 一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddler的数据 ...

  3. Sublime下MarkDown插件实现编辑和实时预览并转换成HTML格式

    最近在使用markdown做笔记,编辑器Sublime Text3用起来很轻巧,现在让他支持markdown的语法并且可以实时预览. 安装准备——安装Package Control Package C ...

  4. Android 中Jackson的简单使用

    第一步:下载Jackson的jar包http://pan.baidu.com/s/1qXHwtQ0 第二步:在gradle中导入jar包 第三步:创建ObjectMapper对象的单例 Jackson ...

  5. pthread mutex

    pthead_mutex_t mutex; 1:create: pthread_mutex_init(pthread_mutex_t* mutex, const pthread_mutexattr_t ...

  6. tp3.2 支付宝app支付

    pay方法 /** *支付宝支付 */ public function pay($param) { vendor('alipay.AopSdk');// 加载类库 $config = array( ' ...

  7. svn下copy项目后定位到新资源库,产生不同版本号的方法

    转载于http://blog.csdn.net/u012990533/article/details/44776465 最近这两天,公司要做国际化的开发,本打算要用struts2内置的i18n拦截器做 ...

  8. TableStore:创建SyncClient+getRow读取一行数据

    1.通过控制台或者客户端,在TableStore中新建了实例owlforest,在实例详情中获取到实例访问地址endPoint 2.新建表user,确定主键为userid(Interger)类型,因为 ...

  9. Struts2学习:HelloWorld

    项目结构: 1.用IDEA新建一个SpringBoot+Maven的项目 2.新建的项目是没有webapp.WEB-INF.与web.xml文件的,需要在下图中添加: 3.在pom.xml引入stru ...

  10. python3.5安装Numpy、mayploylib、opencv等额外库

    安装Python很简单,但是安装额外的扩展库就好麻烦,没有了第三方库的Python就是一个鸡肋~~  我们现在安装NumPy库 1. 首先这里假设你已经安装了Python了,不会的去看我的另一篇博文( ...