qstandardpaths_win.cpp: Fix GetCurrentProcessToken() for Win7

The GetCurrentProcessToken() was made an inline function
for Windows 8. Expand it to ensure builds work independent
of WINVER and disable low integrity support for Windows 7.

Fixes: QTBUG-83941
Task-number: QTBUG-83453
Change-Id: Ic989f16621cd80cbc70c6b62779afab8a12714df
Reviewed-by: Fredrik Orderud <forderud@gmail.com>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Fredrik Orderud 2020-05-05 13:59:27 +02:00 committed by Friedemann Kleint
parent 798492ccee
commit a8b373d678

View File

@ -47,6 +47,7 @@
#include <qcoreapplication.h>
#endif
#include <qoperatingsystemversion.h>
#include <qt_windows.h>
#include <shlobj.h>
#include <intshcut.h>
@ -99,7 +100,11 @@ static bool isProcessLowIntegrity() {
// Disable function until Qt CI is updated
return false;
#else
HANDLE process_token = GetCurrentProcessToken(); // non-leaking pseudo-handle
if (QOperatingSystemVersion::current() < QOperatingSystemVersion::Windows8)
return false;
// non-leaking pseudo-handle. Expanded inline function GetCurrentProcessToken()
// (was made an inline function in Windows 8).
const auto process_token = HANDLE(quintptr(-4));
QVarLengthArray<char,256> token_info_buf(256);
auto* token_info = reinterpret_cast<TOKEN_MANDATORY_LABEL*>(token_info_buf.data());