[runner] Change way of dropping privileges to start PT Run

This commit is contained in:
Enrico Giordani
2020-05-29 19:02:37 +02:00
committed by Enrico Giordani
parent e96c82b171
commit e6408a0c37
5 changed files with 72 additions and 59 deletions

View File

@@ -510,7 +510,7 @@ bool run_non_elevated(const std::wstring& file, const std::wstring& params, DWOR
siex.lpAttributeList = pptal;
siex.StartupInfo.cb = sizeof(siex);
PROCESS_INFORMATION process_info = { 0 };
PROCESS_INFORMATION pi = { 0 };
auto succeeded = CreateProcessW(file.c_str(),
const_cast<LPWSTR>(executable_args.c_str()),
nullptr,
@@ -520,31 +520,35 @@ bool run_non_elevated(const std::wstring& file, const std::wstring& params, DWOR
nullptr,
nullptr,
&siex.StartupInfo,
&process_info);
if (process_info.hProcess)
&pi);
if (succeeded)
{
if (returnPid)
if (pi.hProcess)
{
*returnPid = GetProcessId(process_info.hProcess);
}
if (returnPid)
{
*returnPid = GetProcessId(pi.hProcess);
}
CloseHandle(process_info.hProcess);
}
if (process_info.hThread)
{
CloseHandle(process_info.hThread);
CloseHandle(pi.hProcess);
}
if (pi.hThread)
{
CloseHandle(pi.hThread);
}
}
return succeeded;
}
bool run_same_elevation(const std::wstring& file, const std::wstring& params)
bool run_same_elevation(const std::wstring& file, const std::wstring& params, DWORD* returnPid)
{
auto executable_args = L"\"" + file + L"\"";
if (!params.empty())
{
executable_args += L" " + params;
}
STARTUPINFO si = { 0 };
PROCESS_INFORMATION pi = { 0 };
auto succeeded = CreateProcessW(file.c_str(),
@@ -557,13 +561,23 @@ bool run_same_elevation(const std::wstring& file, const std::wstring& params)
nullptr,
&si,
&pi);
if (pi.hProcess)
if (succeeded)
{
CloseHandle(pi.hProcess);
}
if (pi.hThread)
{
CloseHandle(pi.hThread);
if (pi.hProcess)
{
if (returnPid)
{
*returnPid = GetProcessId(pi.hProcess);
}
CloseHandle(pi.hProcess);
}
if (pi.hThread)
{
CloseHandle(pi.hThread);
}
}
return succeeded;
}