在服务中用管理员权限创建一个可弹出UI的进程 (转载)
2017-08-10 11:54
483 查看
转载:http://blog.csdn.net/woshinia/article/details/7850295
转载:http://blog.csdn.net/hurryboylqs/article/details/53004970
转载:http://blog.csdn.net/fakine/article/details/8537763
转载:http://blog.csdn.net/hurryboylqs/article/details/53004970
转载:http://blog.csdn.net/fakine/article/details/8537763
HANDLE hToken = NULL; HANDLE hTokenDup = NULL; do { if(OpenProcessToken(GetCurrentProcess(),TOKEN_ALL_ACCESS,&hToken)) { if(DuplicateTokenEx(hToken, TOKEN_ALL_ACCESS,NULL, SecurityIdentification, TokenPrimary, &hTokenDup)) { //得到当前用户回话ID DWORD dwSessionId = WTSGetActiveConsoleSessionId(); if(!SetTokenInformation(hTokenDup,TokenSessionId,&dwSessionId,sizeof(DWORD))) { PrintfDbgStr(TEXT("SetTokenInformation error !error code:%d\n"),GetLastError()); bSuccess = FALSE; break; } STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si,sizeof(STARTUPINFO)); ZeroMemory(&pi,sizeof(PROCESS_INFORMATION)); si.cb = sizeof(STARTUPINFO); si.lpDesktop = _T("WinSta0\\Default"); si.wShowWindow = SW_SHOW; si.dwFlags = STARTF_USESHOWWINDOW /*|STARTF_USESTDHANDLES*/; LPVOID pEnv = NULL; DWORD dwCreationFlag = NORMAL_PRIORITY_CLASS | CREATE_NEW_CONSOLE | CREATE_UNICODE_ENVIRONMENT; if(!CreateEnvironmentBlock(&pEnv,hTokenDup,FALSE)) { PrintfDbgStr(TEXT("CreateEnvironmentBlock error !error code:%d\n"),GetLastError()); bSuccess = FALSE; break; } if(!CreateProcessAsUser(hTokenDup,NULL,pBuf,NULL,NULL,FALSE,dwCreationFlag,pEnv,NULL,&si,&pi)) { PrintfDbgStr(TEXT("CreateProcessAsUser error !error code:%d\n"),GetLastError()); bSuccess = FALSE; break; } if(pEnv) { DestroyEnvironmentBlock(pEnv); } } else { PrintfDbgStr(TEXT("DuplicateTokenEx error !error code:%d\n"),GetLastError()); bSuccess = FALSE; break; } } else { PrintfDbgStr(TEXT("cannot get administror!error code:%d\n"),GetLastError()); bSuccess = FALSE; break; } }while(0); if(hTokenDup != NULL && hTokenDup != INVALID_HANDLE_VALUE) CloseHandle(hTokenDup); if(hToken != NULL && hToken != INVALID_HANDLE_VALUE) CloseHandle(hToken);
相关文章推荐
- 在服务中用管理员权限创建一个可弹出UI的进程
- 在服务中用管理员权限创建一个可弹出UI的进程
- 在服务中用管理员权限创建一个进程
- 服务程序中创建带管理员权限的UI进程问题总结
- [转载]创建高权限进程
- 服务进程创建一个带窗口的进程
- 如何利用Win32服务进程去创建一个GUI用户进程?
- [Win32] 服务程序开发(3)Session 0隔离(下)创建SYSTEM权限可交互进程
- [转载]创建高权限进程
- 服务进程创建一个带窗口的进程,过UAC
- [转载]创建高权限进程
- 【转载】给别人的电脑创建一个删不掉的管理员
- 如何在Mac OS X上创建一个Service服务进程
- 转载:在百度文库上找到的一个管理员权限的问答
- [转载] 分析Linux内核创建一个新进程的过程
- 如何为一个服务进程创建监控,即使出core也能自动重启
- 不是管理员权限的进程启动一个具备管理员权限的EXE
- 创建一个非超级管理员用户,并增加 sudo 权限
- 一个进程是否以管理员权限运行
- VC 判断进程是否是以管理员权限运行,并且判断是否是用户进程而非服务进程