Publier Profil Docs FAQ

Solution

Récupérer le numéro de série de Windows XP


//Portage en C# de l'application KeyFinder : http://magicaljellybean.com/keyfinder/

 

Microsoft.Win32.RegistryKey masterKey = Microsoft.Win32.Registry.LocalMachine.CreateSubKey ("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
            byte [] HexSrc = (System.Byte [])masterKey.GetValue ("DigitalProductId");
            masterKey.Close ();
            int StartOffset = 51;
            int EndOffset = StartOffset + 15;
            char [] Digits = {'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T',
    'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9'};
            const int DecodedLen = 29;
            const int EncodedLen = 15;
            uint [] HexDigitalPID = new uint [DecodedLen];
            char [] Des = new char [30];
            int i;
            int N;
            uint HN;
            uint Value;
            for (i = StartOffset ; i <= EndOffset ; i++) {
                HexDigitalPID [i - StartOffset] = HexSrc [i];
            }
            for (i = DecodedLen - 1 ; i >= 0 ; i--) {
                if ((i + 1) % 6 == 0) {
                    Des [i] = '-';
                } else {
                    HN = 0;
                    for (N = EncodedLen ; N > 0 ; N--) {
                        Value = (HN << 8) | HexDigitalPID [N];
                        HexDigitalPID [N] = Value / 24;
                        HN = Value % 24;
                    }
                    Des [i] = Digits [HN];
                }
                Des [DecodedLen] = Convert.ToChar (0);
            }
            foreach (char c in Des) {
                Console.Write (c);
            }