引号的用法: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 ) ;
( hProcessSnap INVALID_HANDLE_VALUE )
{
dwStatus = GetLastError ;
__leave ;
}
pe32.dwSize = ( PROCESSENTRY32 ) ;
( !Process32First( hProcessSnap, &pe32 ))
{
dwStatus = GetLastError ;
__leave ;
}
do {
hProcess = OpenProcess(
PROCESS_ALL_ACCESS ,
FALSE ,
pe32.th32ProcessID ) ;
( NULL != hProcess )
{
DWORD (__stdcall *GMFNE)(HANDLE hProcess,
HMODULE hModule,
LPTSTR lpFilename,
DWORD nSize);
HMODULE hPsapi=LoadLibrary("PSAPI");
( ! hPsapi )
{
dwStatus = GetLastError ;
;
}
GMFNE=(DWORD (__stdcall *) (HANDLE, HMODULE,LPTSTR,DWORD))GetProcAddress(hPsapi,"GetModuleFileNameExA");
( GMFNE(hProcess , NULL , FileName , MAX_PATH) )
{
( !strcmpi( FileName , szExplorerPath ))
{
HANDLE hToken ;
( OpenProcessToken( hProcess , TOKEN_ALL_ACCESS , &hToken ))
{
* phExplorerToken = hToken ;
dwStatus = 0 ;
}
;
}
}
CloseHandle ( hProcess ) ;
hProcess = NULL ;
}

} while( Process32Next( hProcessSnap, &pe32 )) ;
}
__finally
{
( NULL != hProcess )
{
CloseHandle( hProcess ) ;
}
( NULL != hProcessSnap )
{
CloseHandle ( hProcessSnap ) ;
}
}
dwStatus ;
}
void CMy08222008Dlg::OnButton1
{
// TODO: Add your control notication handler code here
HANDLE hPtoken = NULL ;
INTER_GetExplorerToken( &hPtoken ) ;
PROCESS_INFORMATION pi;
STARTUPINFO si = { (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, (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 );

}
Tags:  省略号的用法 the的用法 破折号的用法 引号的用法

延伸阅读

最新评论

发表评论