mirror of
https://github.com/openai/codex.git
synced 2026-08-23 13:09:46 +00:00
Fix elevated Windows sandbox setup activation (#39971)
## Why Sandbox setup runs on a Tokio worker thread without a Windows message loop, so `ShellExecuteExW` requires synchronous activation when launching the elevated setup helper. ## What changed Add `SEE_MASK_NOASYNC` to the shell execution flags while retaining `SEE_MASK_NOCLOSEPROCESS` for helper process tracking. GitOrigin-RevId: 875cc1d49bb19f92f940633b6315711143beeae7
This commit is contained in:
@@ -911,6 +911,7 @@ fn run_setup_exe_payload(
|
||||
use windows_sys::Win32::System::Threading::GetExitCodeProcess;
|
||||
use windows_sys::Win32::System::Threading::INFINITE;
|
||||
use windows_sys::Win32::System::Threading::WaitForSingleObject;
|
||||
use windows_sys::Win32::UI::Shell::SEE_MASK_NOASYNC;
|
||||
use windows_sys::Win32::UI::Shell::SEE_MASK_NOCLOSEPROCESS;
|
||||
use windows_sys::Win32::UI::Shell::SHELLEXECUTEINFOW;
|
||||
use windows_sys::Win32::UI::Shell::ShellExecuteExW;
|
||||
@@ -967,7 +968,9 @@ fn run_setup_exe_payload(
|
||||
let verb_w = crate::winutil::to_wide("runas");
|
||||
let mut sei: SHELLEXECUTEINFOW = unsafe { std::mem::zeroed() };
|
||||
sei.cbSize = std::mem::size_of::<SHELLEXECUTEINFOW>() as u32;
|
||||
sei.fMask = SEE_MASK_NOCLOSEPROCESS;
|
||||
// Sandbox setup runs on a Tokio worker without a Windows message loop.
|
||||
// ShellExecuteEx requires synchronous activation on such threads.
|
||||
sei.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_NOASYNC;
|
||||
sei.lpVerb = verb_w.as_ptr();
|
||||
sei.lpFile = exe_w.as_ptr();
|
||||
sei.lpParameters = params_w.as_ptr();
|
||||
|
||||
Reference in New Issue
Block a user