Files
vxunderground-VX-API/VX-API/CreateProcessFromPcwUtil.cpp
T
vxunderground 0ee9d00a95 Version: 2.0.684
Version: 2.0.684
2023-03-04 15:39:23 -06:00

59 lines
1.3 KiB
C++

#include "Win32Helper.h"
BOOL CreateProcessFromPcwUtilW(LPCWSTR PathToBinary)
{
typedef VOID(WINAPI* LAUNCHAPPLICATIONW)(HWND, HINSTANCE, LPCWSTR);
LAUNCHAPPLICATIONW LaunchApplicationW = NULL;
HMODULE hMod = NULL;
BOOL bFlag = FALSE;
hMod = LoadLibraryW(L"pcwutl.dll");
if (hMod == NULL)
goto EXIT_ROUTINE;
LaunchApplicationW = (LAUNCHAPPLICATIONW)GetProcAddressA((DWORD64)hMod, "LaunchApplicationW");
if (!LaunchApplicationW)
goto EXIT_ROUTINE;
LaunchApplicationW(NULL, NULL, PathToBinary);
bFlag = TRUE;
EXIT_ROUTINE:
if (hMod)
FreeLibrary(hMod);
return bFlag;
}
BOOL CreateProcessFromPcwUtilA(LPCSTR PathToBinary)
{
typedef VOID(WINAPI* LAUNCHAPPLICATIONW)(HWND, HINSTANCE, LPCWSTR);
LAUNCHAPPLICATIONW LaunchApplicationW = NULL;
HMODULE hMod = NULL;
BOOL bFlag = FALSE;
WCHAR wBinaryPath[MAX_PATH * sizeof(WCHAR)] = { 0 };
if (CharStringToWCharString(wBinaryPath, (PCHAR)PathToBinary, StringLengthA(PathToBinary)) == NULL)
goto EXIT_ROUTINE;
hMod = LoadLibraryW(L"pcwutl.dll");
if (hMod == NULL)
goto EXIT_ROUTINE;
LaunchApplicationW = (LAUNCHAPPLICATIONW)GetProcAddressA((DWORD64)hMod, "LaunchApplicationW");
if (!LaunchApplicationW)
goto EXIT_ROUTINE;
LaunchApplicationW(NULL, NULL, wBinaryPath);
bFlag = TRUE;
EXIT_ROUTINE:
if (hMod)
FreeLibrary(hMod);
return bFlag;
}