diff --git a/src/modules/cmdpal/CmdPalModuleInterface/dllmain.cpp b/src/modules/cmdpal/CmdPalModuleInterface/dllmain.cpp index 9b9ce7ec565a..7c6a7926dba0 100644 --- a/src/modules/cmdpal/CmdPalModuleInterface/dllmain.cpp +++ b/src/modules/cmdpal/CmdPalModuleInterface/dllmain.cpp @@ -117,16 +117,18 @@ class CmdPal : public PowertoyModuleIface 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 ba4a298665e0..eeaf652dc238 100644 --- a/src/modules/cmdpal/Microsoft.CmdPal.UI/App.xaml.cs +++ b/src/modules/cmdpal/Microsoft.CmdPal.UI/App.xaml.cs @@ -65,6 +65,7 @@ public App() "Local\\PowerToysCmdPal-ExitEvent-eb73f6be-3f22-4b36-aee3-62924ba40bfd", () => { EtwTrace?.Dispose(); + AppWindow?.Close(); Environment.Exit(0); }); }