CreateProcessAsUser的用法
最近太忙了,忙着弄公司的产品,现在好不容易有点时间来写点东西,代码很乱,没有整理,只是提供思路
DWORD __stdcall INTER_GetExplorerToken(OUT PHANDLE phExplorerToken )
{
DWORD dwStatus = ERROR_FILE_NOT_FOUND ;
BOOL bRet = FALSE ;
HANDLE hProcess = NULL ;
HANDLE hProcessSnap = NULL ;
char szExplorerPath[MAX_PATH] = { 0 } ;
char FileName[MAX_PATH] = { 0 } ;
PROCESSENTRY32 pe32 = { 0 } ;
__try
{
GetWindowsDirectory( szExplorerPath , MAX_PATH ) ;
strcat( szExplorerPath , "//Explorer.EXE" ) ;
hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS , 0 ) ;
if( hProcessSnap == INVALID_HANDLE_VALUE )
{
dwStatus = GetLastError() ;
__leave ;
}
pe32.dwSize = sizeof( PROCESSENTRY32 ) ;
if( !Process32First( hProcessSnap, &pe32 ))
{
dwStatus = GetLastError() ;
__leave ;
}
do {
hProcess = OpenProcess(
PROCESS_ALL_ACCESS ,
FALSE ,
pe32.th32ProcessID ) ;
if( NULL != hProcess )
{
DWORD (__stdcall *GMFNE)(HANDLE hProcess,
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize);
HMODULE hPsapi=LoadLibrary("PSAPI");
if ( ! hPsapi )
{
dwStatus = GetLastError() ;
break ;
}
GMFNE=(DWORD (__stdcall *) (HANDLE, HMODULE,LPTSTR,DWORD))GetProcAddress(hPsapi,"GetModuleFileNameExA");
if ( GMFNE(hProcess , NULL , FileName , MAX_PATH) )
{
if( !strcmpi( FileName , szExplorerPath ))
{
HANDLE hToken ;
if( OpenProcessToken( hProcess , TOKEN_ALL_ACCESS , &hToken ))
{
* phExplorerToken = hToken ;
dwStatus = 0 ;
}
break ;
}
}
CloseHandle ( hProcess ) ;
hProcess = NULL ;
}
} while( Process32Next( hProcessSnap, &pe32 )) ;
}
__finally
{
if( NULL != hProcess )
{
CloseHandle( hProcess ) ;
}
if( NULL != hProcessSnap )
{
CloseHandle ( hProcessSnap ) ;
}
}
return dwStatus ;
}
void CMy08222008Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
HANDLE hPtoken = NULL ;
INTER_GetExplorerToken( &hPtoken ) ;
PROCESS_INFORMATION pi;
STARTUPINFO si = { sizeof(STARTUPINFO),NULL,"",NULL,0,0,0,0,0,0,0,STARTF_USESHOWWINDOW,0,0,NULL,0,0,0};
si.wShowWindow = SW_SHOW;
si.lpDesktop = NULL;
ZeroMemory( &pi, sizeof(pi) );
CreateProcessAsUser( hPtoken ,"c://autoruns.exe",NULL ,
NULL,NULL,FALSE , NORMAL_PRIORITY_CLASS| CREATE_NEW_CONSOLE ,NULL,NULL,&si,&pi ) ;
Sleep(1000);
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
CreateProcessAsUser的用法相关推荐
- API函数ShellExecute与ShellExecuteEx用法
ShellExecute: 1.函数功能: 你可以给它任何文件的名字,它都能识别出来并打开它. 2.函数原型: HINSTANCE ShellExecute( HWND hwnd, LPCTSTR l ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Pandas_transform的用法
先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
- python yield 和 yield from用法总结
#例1. 简单输出斐波那契數列前 N 个数 #缺点:该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列 #要提高 fab 函数的可复用性,最好不要直接打印出数列,而 ...
- tf.nn.embedding_lookup()的用法
函数: tf.nn.embedding_lookup( params, ids, partition_strategy='mod', name=None, validate_indices=True, ...
- OpenMP用法大全
OpenMP基本概念 OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的 ...
- Dorado用法与示例
Dorado用法与示例 dorado用后总结 一.dorado概念 dorado的产品全名是"dorado展现中间件".从产品形态上dorado由两部分组成,第一部分是一个具有AJ ...
最新文章
- windows 下xampp集成环境安装mongodb扩展
- 高阶数据结构:SSTable
- VTK:PolyData之DistancePolyDataFilter
- java中的类型转换
- 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transformations
- ado.net操作数据库
- nginx怎么升级php的版本号,nginx 升级指南,最详细的nginx升级步骤
- 深度学习笔记(27) 经典卷积网络
- oracle中制作副本,创建表的副本并在创建时为其提供约束
- 系统学习NLP(二十二)--主题模型LDA
- 最牛逼android上的图表库MpChart(三) 条形图
- 火狐浏览器设置bypass
- eigrp 非等值负载均衡
- cuda+cudnn下载安装
- 怎么用python实现序列比对_生信学习笔记——Python+Mafft实现批量化多序列比对
- 中国人和犹太人做生意的区别
- ssd linux 硬盘备份,SSD最佳备份良伴 群晖3步搞定系统备份
- Sicily 1001. Alphacode
- 思岚科技定位导航技术凸显 成为服务机器人企业首选品牌
- 2021年中国烧碱市场供需现状、进出口贸易及价格走势分析[图]
热门文章
- HTML5开发系列(4) 之 样式表的三种类型
- 关于scipy库里面的DCT离散余弦变换函数
- web前端的网页优化
- App 运营 推广相关
- 字节Scala面试题(2) --- 伴生对象
- 【python】详解pandas.DataFrame.resample根据时间聚合采样(一)
- Linux df du 命令
- PortSwigger Academy | Authentication : 身份认证
- 最新apktool_2.4.1
- 安徽公务员计算机专业科目真题,公务员计算机专业真题+答案安徽省考 安徽省公务员考试...