From 96b39a5973d354bf759fefc13e551fb75e1c25c7 Mon Sep 17 00:00:00 2001 From: Mounir IDRASSI Date: Sat, 31 Jan 2015 23:49:01 +0100 Subject: Windows: retry UAC prompt operation in case of failure. This avoids cancel the whole operation if the user is not in front of the machine during UAC prompt (this happens ofter during in-place encryption of big NTFS partitions). --- src/Format/Tcformat.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src/Format') diff --git a/src/Format/Tcformat.c b/src/Format/Tcformat.c index d55cc064..4984e6cc 100644 --- a/src/Format/Tcformat.c +++ b/src/Format/Tcformat.c @@ -266,14 +266,18 @@ static BOOL ElevateWholeWizardProcess (string arguments) GetModuleFileName (NULL, modPath, sizeof (modPath)); - if ((int)ShellExecute (MainDlg, "runas", modPath, (string("/q UAC ") + arguments).c_str(), NULL, SW_SHOWNORMAL) > 32) - { - exit (0); - } - else + while (true) { - Error ("UAC_INIT_ERROR", MainDlg); - return FALSE; + if ((int)ShellExecute (MainDlg, "runas", modPath, (string("/q UAC ") + arguments).c_str(), NULL, SW_SHOWNORMAL) > 32) + { + exit (0); + } + else + { + if (IDRETRY == ErrorRetryCancel ("UAC_INIT_ERROR", MainDlg)) + continue; + return FALSE; + } } } -- cgit v1.2.3