diff --git a/src/windows/common/helpers.cpp b/src/windows/common/helpers.cpp index ba36cea..61e57e2 100644 --- a/src/windows/common/helpers.cpp +++ b/src/windows/common/helpers.cpp @@ -92,8 +92,7 @@ public: [[nodiscard]] wil::unique_handle Launch(_In_opt_ HANDLE UserToken, _In_ bool HideWindow, _In_ bool CreateNoWindow = false) const { // If a user token was provided, create an environment block from the token. - using unique_environment_block = wil::unique_any; - unique_environment_block environmentBlock{nullptr}; + wsl::windows::common::helpers::unique_environment_block environmentBlock{nullptr}; if (ARGUMENT_PRESENT(UserToken)) { THROW_LAST_ERROR_IF(!CreateEnvironmentBlock(&environmentBlock, UserToken, false)); @@ -572,6 +571,12 @@ void wsl::windows::common::helpers::LaunchWslSettingsOOBE(_In_ HANDLE UserToken) wsl::windows::common::SubProcess process(wslSettingsExePath.c_str(), commandLine); process.SetToken(UserToken); process.SetShowWindow(SW_SHOW); + + wsl::windows::common::helpers::unique_environment_block environmentBlock{nullptr}; + THROW_LAST_ERROR_IF(!CreateEnvironmentBlock(&environmentBlock, UserToken, false)); + + process.SetEnvironment(environmentBlock.get()); + process.Start(); } diff --git a/src/windows/common/helpers.hpp b/src/windows/common/helpers.hpp index 64acada..5d3b0f0 100644 --- a/src/windows/common/helpers.hpp +++ b/src/windows/common/helpers.hpp @@ -92,6 +92,8 @@ struct GuidLess typedef wil::unique_any_handle_null unique_pseudo_console; +using unique_environment_block = wil::unique_any; + inline void DeleteProcThreadAttributeList(_In_ PPROC_THREAD_ATTRIBUTE_LIST AttributeList) { ::DeleteProcThreadAttributeList(AttributeList);