0
我正在嘗試編寫一個C++函數,告訴用戶他們當前使用的Windows操作系統是否被激活。以編程方式檢查Windows是否用C++激活
我找到了一個相似的問題Programmatically check if Windows 7 is activated,但是這個答案需要一個UID參數。我不希望用戶必須輸入任何參數。
如何以編程方式檢查Windows是否用C++激活?
我正在嘗試編寫一個C++函數,告訴用戶他們當前使用的Windows操作系統是否被激活。以編程方式檢查Windows是否用C++激活
我找到了一個相似的問題Programmatically check if Windows 7 is activated,但是這個答案需要一個UID參數。我不希望用戶必須輸入任何參數。
如何以編程方式檢查Windows是否用C++激活?
#define _WIN32_WINNT 0x600
#include <iostream>
#include <windows.h>
#include <slpublic.h>
/*'
From: C:/Windows/System32/SLMGR.vbs
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' Windows Software Licensing Management Tool.
'
' Script Name: slmgr.vbs
'
' WMI class names
private const ServiceClass = "SoftwareLicensingService"
private const ProductClass = "SoftwareLicensingProduct"
private const TkaLicenseClass = "SoftwareLicensingTokenActivationLicense"
private const WindowsAppId = "55c92734-d682-4d71-983e-d6ec3f16059f"
*/
/** Use the WindowsAppId above to check if Windows OS itself is Genuine. **/
bool isGenuineWindows()
{
//WindowsAppId
unsigned char uuid_bytes[] = {0x35, 0x35, 0x63, 0x39, 0x32, 0x37, 0x33, 0x34, 0x2d, 0x64, 0x36,
0x38, 0x32, 0x2d, 0x34, 0x64, 0x37, 0x31, 0x2d, 0x39, 0x38, 0x33,
0x65, 0x2d, 0x64, 0x36, 0x65, 0x63, 0x33, 0x66, 0x31, 0x36, 0x30,
0x35, 0x39, 0x66};
GUID uuid;
SL_GENUINE_STATE state;
UuidFromStringA(uuid_bytes, &uuid);
SLIsGenuineLocal(&uuid, &state, nullptr);
return state == SL_GEN_STATE_IS_GENUINE;
}
int main()
{
std::cout<<isGenuineWindows();
return 0;
}
鏈接反對:librpcrt4.a
和libslwga.a
將這項工作的所有版本的Windows? – antman1p
@ antman1p不,這隻支持Vista + ..所以Vista,Win7,Win8,Win8.1,Win10。我已經在Win10和Win8上測試過了,工作。我沒有在Win7上測試過它,但我100%肯定它會工作。 – Brandon