📄 erunasdll.cpp
字号:
#define WIN32_LEAN_AND_MEAN
#define UNICODE
#include <windows.h>
#define DefWinStaDesk L"WinSta0\\Default"
extern "C" __declspec(dllexport)
DWORD WINAPI CreateProcessAsSYSTEMW(DWORD CallerPID, LPWSTR lpCommandLineW,
DWORD dwCreationFlags, LPWSTR lpWinStaDeskW, LPWSTR lpCurrentDirectoryW) {
HANDLE hCaller, hThread = NULL, hProcess = NULL;
if(hCaller = OpenProcess(PROCESS_DUP_HANDLE, FALSE, CallerPID)) {
if(lpWinStaDeskW == NULL)
lpWinStaDeskW = DefWinStaDesk;
WCHAR OldDIR[MAX_PATH]; OldDIR[0] = '\0';
if(lpCurrentDirectoryW)
if(GetCurrentDirectoryW(sizeof(OldDIR), OldDIR))
SetCurrentDirectoryW(lpCurrentDirectoryW);
STARTUPINFOW si = {sizeof(si)};
si.lpDesktop = lpWinStaDeskW;
PROCESS_INFORMATION pi;
if(CreateProcessW(NULL, lpCommandLineW, NULL, NULL, FALSE, dwCreationFlags, NULL, NULL, &si, &pi)) {
HANDLE hCP = GetCurrentProcess();
DuplicateHandle(hCP, pi.hThread, hCaller, &hThread, 0, FALSE, DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS);
DuplicateHandle(hCP, pi.hProcess, hCaller, &hProcess, 0, FALSE, DUPLICATE_CLOSE_SOURCE | DUPLICATE_SAME_ACCESS);
}
if(OldDIR[0])
SetCurrentDirectoryW(OldDIR);
CloseHandle(hCaller);
}
return((LOWORD((DWORD)hProcess) << 16) + LOWORD((DWORD)hThread));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -