#include "hardware_functions.h" #include #include #include #if (defined(_WIN32) || defined(_WIN64)) // clang-format off #include #include // clang-format on QString get_hdid() { HANDLE hToken; HANDLE pHandle; PTOKEN_USER pToken; DWORD uSize = 0; LPWSTR HDIDParam; pHandle = GetCurrentProcess(); OpenProcessToken(pHandle, TOKEN_QUERY, &hToken); if (!GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS)1, NULL, 0, &uSize)) { if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { CloseHandle(hToken); return "gxsps32sa9fnwic92mfbs1"; } } pToken = (PTOKEN_USER)GlobalAlloc(GPTR, uSize); if (!GetTokenInformation(hToken, (TOKEN_INFORMATION_CLASS)1, pToken, uSize, &uSize)) { CloseHandle(hToken); return "gxsps32sa9fnwic92mfbs2"; } ConvertSidToStringSidW(pToken->User.Sid, &HDIDParam); QString returnHDID = QString::fromWCharArray(HDIDParam); CloseHandle(hToken); return returnHDID; } #elif defined(ANDROID) #include QString get_hdid() { QAndroidJniObject appctx = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;").callObjectMethod("getApplicationContext", "()Landroid/content/Context;"); QAndroidJniObject androidId = QAndroidJniObject::callStaticObjectMethod("android/provider/Settings$Secure", "getString", "(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;", appctx.callObjectMethod("getContentResolver", "()Landroid/content/ContentResolver;").object(), QAndroidJniObject::fromString("android_id").object()); return androidId.toString(); } #else #include QByteArray machineId; QString get_hdid() { machineId = QSysInfo::machineUniqueId(); return QString(machineId); } #endif