The Road to Delphi

Delphi – Free Pascal – Oxygene

Determine Genuine Windows Installation using C#

2 Comments

To Determine a genuine Windows installation, you must use the SLIsGenuineLocal function (Checks whether the specified application is a genuine Windows installation), which is part of the Software Licensing API.

The Software Licensing API (SLAPI) can be used to determine a genuine Microsoft Windows installation, install and log an asset management license, and retrieve information about the licensing policy of a software component.

//Author : Rodrigo Ruz. 2009-10-12
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace DetermineWindowsOriginal
{
  using SLID = Guid; //SLID id declarated as typedef GUID SLID; in slpublic.h
  class Program
  {
    public enum SL_GENUINE_STATE
    {
      SL_GEN_STATE_IS_GENUINE = 0,
      SL_GEN_STATE_INVALID_LICENSE = 1,
      SL_GEN_STATE_TAMPERED = 2,
      SL_GEN_STATE_LAST = 3
    }
    [DllImportAttribute("Slwga.dll", EntryPoint = "SLIsGenuineLocal", CharSet = CharSet.None, ExactSpelling = false, SetLastError = false, PreserveSig = true, CallingConvention = CallingConvention.Winapi, BestFitMapping = false, ThrowOnUnmappableChar = false)]
    [PreserveSigAttribute()]
    internal static extern uint SLIsGenuineLocal(ref SLID slid, [In, Out] ref SL_GENUINE_STATE genuineState, IntPtr val3);
    public static bool IsGenuineWindows()
    {
      bool _IsGenuineWindows = false;
      Guid ApplicationID = new Guid("55c92734-d682-4d71-983e-d6ec3f16059f"); //Application ID GUID http://technet.microsoft.com/en-us/library/dd772270.aspx
      SLID windowsSlid = (Guid)ApplicationID;
      try
      {
        SL_GENUINE_STATE genuineState = SL_GENUINE_STATE.SL_GEN_STATE_LAST;
        uint ResultInt = SLIsGenuineLocal(ref windowsSlid, ref genuineState, IntPtr.Zero);
        if (ResultInt == 0)
        {
          _IsGenuineWindows = (genuineState == SL_GENUINE_STATE.SL_GEN_STATE_IS_GENUINE);
        }
        else
        {
          Console.WriteLine("Error getting information {0}", ResultInt.ToString());
        }
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
      }
      return _IsGenuineWindows;
    }

    static void Main(string[] args)
    {
      if (Environment.OSVersion.Version.Major >= 6) //Version 6 can be Windows Vista, Windows Server 2008, or Windows 7
      {
        if (IsGenuineWindows())
        {
          Console.WriteLine("Original Windows");
        }
        else
        {
          Console.WriteLine("Not Original Windows");
        }
      }
      else
      {
        Console.WriteLine("OS Not supported");
      }
      Console.ReadLine();
    }
  }
}

Author: Rodrigo

Just another Delphi guy.

2 thoughts on “Determine Genuine Windows Installation using C#

  1. Thanks works great!!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s