Search code examples
c++windowsauthenticationactivation

Programmatically Check if Windows is Activated with C++


I am trying to write a C++ function that will tell the user if the windows OS they are currently using is activated of not.

I found a similar question Programmatically check if Windows 7 is activated , but this answer requires a UID argument. I DO NOT want the user to have to enter ANY arguments at all.

How do I programmatically Check if Windows is Activated with C++?


Solution

  • #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;
    }
    

    Link against: librpcrt4.a and libslwga.a