|
11精币
通过服务启动的EXE只能运行在system的用户上,并不能出现交互界面;用论坛上搜到的源码通过 CreateProcessAsUser 可以实现当前用户创建进程,但还是无法出现界面。请问是什么地方错了吗?
调试输出 (RunProcess (“C:\sy\sy.exe”)) 返回 (0 ) |
RunProcess | 逻辑型 | | |
ProcessName | 文本型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | hToken | 整数型 | | | si | STARTUPINFO | | | pi | PROCESS_INFORMATION | | | bResult | 逻辑型 | | | 如果真 (ProcessName = “”)返回 ( #FALSE ) 如果真 (取反 (GetTokenByName (“explorer.exe”, hToken )) )返回 ( #FALSE ) si.cb = 68 si.lpDesktop = “WinSta0\Default”si.dwFlags = #STARTF_USESHOWWINDOW si.wShowWindow = #SW_SHOW bResult = CreateProcessAsUser (hToken, ProcessName, #NULL, #NULL, #NULL, #NULL, 位或 ( #NORMAL_PRIORITY_CLASS, #CREATE_NEW_CONSOLE ), #NULL, #NULL, si, pi ) 延时 (100 ) CloseHandle (hToken )CloseHandle (pi.进程句柄 )CloseHandle (pi.线程句柄 ) 返回 (bResult )|
GetTokenByName | 逻辑型 | | |
lpName | 文本型 | | | | hToken | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | hProcessSnap | 整数型 | | | bRet | 逻辑型 | | | pe32 | PROCESSENTRY32 | | | exefile | 文本型 | | | hProcess | 整数型 | | | 如果真 (lpName = “”)返回 ( #FALSE )hProcessSnap = #NULL bRet = #FALSE hProcessSnap = CreateToolhelp32Snapshot ( #TH32CS_SNAPPROCESS, 0 )如果真 (hProcessSnap = #INVALID_HANDLE_VALUE )返回 ( #FALSE ) pe32.dwSize = 296 如果 (Process32First (hProcessSnap, pe32 )) 循环判断首 () exefile = 到文本 (pe32.szExeFile ) 如果真 (exefile = lpName ) hProcess = OpenProcess ( #PROCESS_QUERY_INFORMATION, #NULL, pe32.th32ProcessID ) bRet = OpenProcessToken (hProcess, #TOKEN_ALL_ACCESS, hToken ) CloseHandle (hProcessSnap )返回 (bRet )循环判断尾 (Process32Next (hProcessSnap, pe32 )) bRet = #TRUE bRet = #FALSE CloseHandle (hProcessSnap )返回 (bRet)
|
最佳答案
查看完整内容
https://bbs.125.la/forum.php?mod=viewthread&tid=14716929&highlight=Session
可以完美解决你的问题
|