BOOL WinLaunchChild(const PRUnichar *exePath, int argc, char **argv, int needElevation) { PRUnichar** argvConverted = new PRUnichar*[argc]; if (!argvConverted) return FALSE; for (int i = 0; i < argc; ++i) { argvConverted[i] = AllocConvertUTF8toUTF16(argv[i]); if (!argvConverted[i]) { return FALSE; } } BOOL ok = WinLaunchChild(exePath, argc, argvConverted, needElevation); FreeAllocStrings(argc, argvConverted); return ok; }
BOOL WinLaunchChild(const wchar_t *exePath, int argc, char **argv, HANDLE userToken, HANDLE *hProcess) { wchar_t** argvConverted = new wchar_t*[argc]; if (!argvConverted) return FALSE; for (int i = 0; i < argc; ++i) { argvConverted[i] = reinterpret_cast<wchar_t*>(AllocConvertUTF8toUTF16(argv[i])); if (!argvConverted[i]) { FreeAllocStrings(i, argvConverted); return FALSE; } } BOOL ok = WinLaunchChild(exePath, argc, argvConverted, userToken, hProcess); FreeAllocStrings(argc, argvConverted); return ok; }