diff --git a/src/modules/cmdpal/CmdPalModuleInterface/dllmain.cpp b/src/modules/cmdpal/CmdPalModuleInterface/dllmain.cpp index 9b9ce7ec56..7c6a7926db 100644 --- a/src/modules/cmdpal/CmdPalModuleInterface/dllmain.cpp +++ b/src/modules/cmdpal/CmdPalModuleInterface/dllmain.cpp @@ -117,16 +117,18 @@ private: for (DWORD pid : processIds) { - HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, pid); + HANDLE hProcess = OpenProcess(SYNCHRONIZE | PROCESS_TERMINATE, FALSE, pid); if (hProcess != NULL) { SetEvent(m_hTerminateEvent); - // Wait for 1.5 seconds for the process to end correctly and stop etw tracer - WaitForSingleObject(hProcess, 1500); + // Wait for 1.5 seconds for the process to end correctly, allowing time for ETW tracer and extensions to stop + if (WaitForSingleObject(hProcess, 1500) == WAIT_TIMEOUT) + { + TerminateProcess(hProcess, 0); + } - TerminateProcess(hProcess, 0); CloseHandle(hProcess); } } diff --git a/src/modules/cmdpal/Microsoft.CmdPal.UI/App.xaml.cs b/src/modules/cmdpal/Microsoft.CmdPal.UI/App.xaml.cs index 9670c8645f..4dee530c98 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI/App.xaml.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI/App.xaml.cs @@ -67,6 +67,7 @@ public partial class App : Application "Local\\PowerToysCmdPal-ExitEvent-eb73f6be-3f22-4b36-aee3-62924ba40bfd", () => { EtwTrace?.Dispose(); + AppWindow?.Close(); Environment.Exit(0); }); }