1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-04-10 07:38:06 -05:00

SetCurrentProcessExplicitAppUserModelID to fix jumplist/removable media bug

The algorithm Windows uses to generate AppUserModelIDs "hangs on" to
removable media (CDs/DVDs) if PuTTY is launched with a CD/DVD in a drive.
Set the AppUserModelID explicitly to avoid using this algorithm.
This commit is contained in:
Owen Dunn 2016-08-29 16:55:42 +01:00
parent c5ce372a36
commit bf00bcd2a4
3 changed files with 36 additions and 0 deletions

View File

@ -357,6 +357,11 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
InitCommonControls();
/* Set Explicit App User Model Id so that jump lists don't cause
PuTTY to hang on to removable media. */
set_explicit_app_user_model_id();
/* Ensure a Maximize setting in Explorer doesn't maximise the
* config box. */
defuse_showwindow();

View File

@ -714,3 +714,33 @@ void remove_session_from_jumplist(const char * const sessionname)
clear_jumplist();
}
}
/* Set Explicit App User Model Id to fix removable media error with
jump lists */
BOOL set_explicit_app_user_model_id()
{
DECL_WINDOWS_FUNCTION(static, HRESULT, SetCurrentProcessExplicitAppUserModelID,
(PCWSTR));
static HMODULE shell32_module = 0;
if (!shell32_module)
{
shell32_module = load_system32_dll("Shell32.dll");
GET_WINDOWS_FUNCTION(shell32_module, SetCurrentProcessExplicitAppUserModelID);
}
if (p_SetCurrentProcessExplicitAppUserModelID)
{
if (p_SetCurrentProcessExplicitAppUserModelID(L"SimonTatham.PuTTY") == S_OK)
{
return TRUE;
}
return FALSE;
}
/* Function doesn't exist, which is ok for Pre-7 systems */
return TRUE;
}

View File

@ -543,6 +543,7 @@ extern Backend serial_backend;
void add_session_to_jumplist(const char * const sessionname);
void remove_session_from_jumplist(const char * const sessionname);
void clear_jumplist(void);
BOOL set_explicit_app_user_model_id();
/*
* Extra functions in winstore.c over and above the interface in