Feedback

C# - Windows CD Key auslesen

Veröffentlicht von am 22.09.2006
(5 Bewertungen)
Liest aus der Windows Registry den Windows CD Key aus.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

namespace CD_Key
{
    public class Win32
    {
        #region Properties
        /// <summary>
        /// Reads the Windows CD key from the registry and returns it as string separated by '-' chars.
        /// </summary>
        public static string WindowsCDKey
        {
            get
            {
                RegistryKey rKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion");
                byte[] rpk = (byte[])rKey.GetValue("DigitalProductId", new byte[0]);

                string strKey = "";

                const int iRPKOffset = 52;
                const string strPossibleChars = "BCDFGHJKMPQRTVWXY2346789";
                int i = 28;

                do
                {
                    long lAccu = 0;
                    int j = 14;

                    do
                    {
                        lAccu *= 256; lAccu += Convert.ToInt64(rpk[iRPKOffset + j]);

                        rpk[iRPKOffset + j] =
                            Convert.ToByte(
                            Convert.ToInt64(Math.Floor((float)lAccu / 24.0f)) & Convert.ToInt64(255)
                            );

                        lAccu %= 24;

                        j -= 1;
                    }
                    while (j >= 0);

                    i -= 1;
                    strKey = strPossibleChars[(int)lAccu].ToString() + strKey;

                    if ((0 == ((29 - i) % 6)) && (-1 != i))
                    {
                        i -= 1;

                        strKey = "-" + strKey;
                    }
                }
                while (i >= 0);

                return strKey;
            }
        }
        
        /// <summary>
        /// Reads the Windows CD key from the registry and returns it as string array.
        /// </summary>
        public static string[] WindowsCDKeyParts
        {
            get
            {
                string[] strKeyParts = WindowsCDKey.Split('-');
                return strKeyParts;
            }
        }
        #endregion
    }
}

2 Kommentare zum Snippet

Marcel Kloubert schrieb am 22.09.2006:
ACHTUNG: Der Namespace hat fälschlicherweise ein Leerzeichen! Dieses am besten mit einem Unterstrich ersetzen!
Jan Welker schrieb am 22.09.2006:
Ich habe den Unterstrich eingefügt.
 

Logge dich ein, um hier zu kommentieren!