OpenProcess前的权限设置
来源:互联网 发布:刘彻爱过卫子夫 知乎 编辑:程序博客网 时间:2024/06/07 20:49
当用OpenProcess函数打开某个进程的句柄时,如果事先没有设置用户的SeDebugPrivilege权限的话会返回INVALID_HANDLE_VALUE,所以必须先设置权限再调用OpenProcess,代码如下:
转载自http://blog.csdn.net/lcfeng1982/article/details/6282934
BOOL SetPrivilege( HANDLE hToken, // access token handle LPCTSTR lpszPrivilege, // name of privilege to enable/disable BOOL bEnablePrivilege // to enable or disable privilege ) { TOKEN_PRIVILEGES tp; LUID luid; if ( !LookupPrivilegeValue( NULL, // lookup privilege on local system lpszPrivilege, // privilege to lookup &luid ) ) // receives LUID of privilege { printf("LookupPrivilegeValue error: %u/n", GetLastError() ); return FALSE; } tp.PrivilegeCount = 1; tp.Privileges[0].Luid = luid; if ( bEnablePrivilege ) tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; else tp.Privileges[0].Attributes = 0; // Enable the privilege or disable all privileges. if ( !AdjustTokenPrivileges( hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), (PTOKEN_PRIVILEGES) NULL, (PDWORD) NULL) ) { printf("AdjustTokenPrivileges error: %u/n", GetLastError() ); return FALSE; } if (GetLastError() == ERROR_NOT_ALL_ASSIGNED) { printf("The token does not have the specified privilege. /n"); return FALSE; } return TRUE;}
然后可以这样调用OpenProcess函数,封装如下:
HANDLE GetProcessHandle(int nID){ HANDLE hToken; bool flag = OpenProcessToken( GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken ); if( !flag ) { DWORD err = GetLastError(); printf( "OpenProcessToken error:%d", err ); } SetPrivilege( hToken, SE_DEBUG_NAME, true ); CloseHandle(hToken); return OpenProcess(PROCESS_ALL_ACCESS, FALSE, nID);}
然后就可以根据某个进程的名字获取这个进程的句柄,封装如下:
HANDLE GetProcessHandle(LPCTSTR pName){ HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (INVALID_HANDLE_VALUE == hSnapshot) { return NULL; } PROCESSENTRY32 pe = { sizeof(pe) }; BOOL fOk; for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe)) { if (!_tcscmp(pe.szExeFile, pName)) { CloseHandle(hSnapshot); return GetProcessHandle(pe.th32ProcessID); } } return NULL;}
转载自http://blog.csdn.net/lcfeng1982/article/details/6282934
- OpenProcess前的权限设置
- OpenProcess前的权限设置
- OpenProcess前的权限设置
- OpenProcess权限
- 关于OpenProcess权限
- 进程权限与OpenProcess
- openprocess
- OpenProcess
- OpenProcess
- OpenProcess
- OpenProcess
- OpenProcess
- openprocess 提升权限结束进程(来自网络)
- 找NT!openprocess的当前和起源地址
- c#注入-OpenProcess之前应先获取debug权限
- 使用openprocess时解决问题,关于权限分配有感
- 打造对抗 OpenProcess 检测的 OD
- 新手,谁能帮我关于OpenProcess的问题
- MyEclipse自动提示配置
- Linux Shell编程学习
- JFrame使用简介
- 用sql脚本 来查询指定表的所有列名称
- eclipse下导入jdk源码
- OpenProcess前的权限设置
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
- 偷窥iPhone Push Notification的幕后
- java web连接sqlite提示java.lang.AbstractMethodError: org.sqlite.DB.open(Ljava/lang/String;)V解决方案
- 数据库通配符详解
- MFC 模态对话框和非模态对话框
- 旋转矩阵
- php预定义sql
- android ramdisk.img的制作过程