mirror of
https://github.com/microsoft/WSL.git
synced 2025-12-10 00:44:55 -06:00
Fix wslsettings crash when invoked from wslservice (#13089)
This commit is contained in:
parent
71daaef7bb
commit
5d20b44bc6
@ -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<LPVOID, decltype(&DestroyEnvironmentBlock), DestroyEnvironmentBlock>;
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@ -92,6 +92,8 @@ struct GuidLess
|
||||
|
||||
typedef wil::unique_any_handle_null<decltype(&::ClosePseudoConsole), ::ClosePseudoConsole> unique_pseudo_console;
|
||||
|
||||
using unique_environment_block = wil::unique_any<LPVOID, decltype(&DestroyEnvironmentBlock), DestroyEnvironmentBlock>;
|
||||
|
||||
inline void DeleteProcThreadAttributeList(_In_ PPROC_THREAD_ATTRIBUTE_LIST AttributeList)
|
||||
{
|
||||
::DeleteProcThreadAttributeList(AttributeList);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user