nie można pobrać seriala pod Windows 8.1

0

pomocy...
nie daje się odczytać wartości spod klucza Rejestru

        private string BG()//  2015-01-17-2058 - dla Windows-8.1 pokazał: ffffffff-ffff-ffff-ffff-ffffffffffff
        {//serial "7b7c15f9-747a-455f-9ba5-f521dde4252d"
            string s = "";
            //
            string io = "t\\W";
            string uk = "tVe";
            string gb = "re\\M";
            string ow = "T\\Cur";
            //
            string nK = "Softwa"+gb+"icrosof"+io+"indows N"+ow+"ren"+uk+"rsion";//[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
            //using Microsoft.Win32;//JM-097 dostęp do Rejestru - 2011-09-24
            try
            {
                RegistryKey r = Registry.LocalMachine.OpenSubKey(nK, false);
                if (r == null) throw new Exception("brak klucza: '" + nK + "'");
                //
                string hw = "ldGU";
                //
                s = (string)r.GetValue("Bui"+hw+"ID");// 2011-09-24 jedyny klucz w wersji zarejestrowanej zawierajacy wartość związaną z serialem Windows-7 znaleziony w Matka !
                //klucz ten występuje również w wersji niezarejestrowanej !!! aby nie pozbawiać wielu moich Klientów możliwości zakupu programu
                //choć skoro nie chcą zapłacić za Windows-4 podstawowej kwoty to i mnie będą chcieli oszukać ?!!!
                //ja nie mogę obejść tego klucza - nie świadczy on o serialu Windows-7 ale zwraca jakiś kod związany z egzemplarzem systemu Windows !
                //obecność innego klucza: ID
                //moze oddzielić amatorów kwaśnicy - Oni nie kupią chyba niczego ?!!!
                //więc w dupę nie ma co im włazić - niech mają wersję tylko FREEWARE ?!!!! - nie nalezy dać Im wersji pełnej !!!
                r.Close();
                //
                if (s == "ffffffff-ffff-ffff-ffff-ffffffffffff")//null)//2015-01-21 Dzień Babci
                    s = "null - Windows 8.1 - brak obsługi 2015-01-21";
            }
            catch (Exception exc)
            {
                string j = "niu reje";
                string xz = "łąd prz";
                //
                MessageBox.Show("B" + xz + "y czyta" + j + "stru: " + exc.Message + ".", this.Text);
            }
            return s;
        }
        //

czy w Windows 8.1 nie da się i należy z tego zrezygnować ???
czy jednak ja coś nie tak zrobiłem...
w Windows 7 to działało !

oba systemy Windows 7/8.1 są 64-bit

dzięki za pomoc

0

co to w ogóle za kod? to wygląda jak wyplute z obfuskatora.

0

Dla mojego Windows 8.1 też jest taki GUID. I w Windows 8 też. Windows 10 już nie chciało mi się sprawdzać. Nie wiem co próbujesz odczytać, ale Product ID jest pod HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProductId i jest unikatowy dla każdej instalacji systemu.

0

Pardon !

Rzeczywiście nie usunąłem komentarzy moich w kodzie
wkleiłem kod bez usunięcia moich komentarzy - bardzo przepraszam Kolegów...

w Windows 7 64-bit dawało się tym kodem odczytać ProductId
wartość spod tego klucza...

niestety w Windows 8.1 również 64-bit zauważyłem, iż nie daje się niczego odczytać...

chyba muszę zrezygnować z pobrania tej wartości...

przepraszam ponownie za niedopatrzenie które rzeczywiście jest denerwujące i nie dziwię się Kolegom za oburzenie

Minios

0

Dotfuscator w Visual Studio jak mniemam jeszcze głupsze nazwy nadaje zmiennym

czy mam jakąś nadzieję, iż jest możliwy odczyt wartości tego klucza pod Windows 8.1 64-bit ???
to jest nadal moje zapytanie do Szanownych Kolegów obu płci...

pozdro

Minios

0

Nie rozumiem. Odczyt jest możliwy, ale ten klucz naprawdę zawiera wartość ffffffff-ffff-ffff-ffff-ffffffffffff. Odczytuj klucz ProductId, a nie BuildGUID.

0

Pardon

podaję drugą metodę w której jest próba pobrania wartości spod klucza ProductId

  private string PI()//    ProductId - 2015-01-17-2058 - dla Windows-8.1 pokazał:  null
        string s = "";
        //
        string yl = "t\\Wi";
        string lx = "T\\Cu";
        string om = "e\\Mic";
        string kz = "tV";
        //
        string nK = "Softwar"+om+"rosof"+yl+"ndows N"+lx+"rren"+kz+"ersion";
        //[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
        *using Microsoft.Win32;*JM-097 dostęp do Rejestru - 2011-09-24
        try
        {
            RegistryKey r = Registry.LocalMachine.OpenSubKey(nK, false);
            if (r == null) throw new Exception("brak klucza: '" + nK + "'");
            //
            string im = "ductI";
            //"00359-112-0000007-85801"
            s = (string)r.GetValue("ProductId");//"Pro"+im+"d");
            r.Close();
            //
            if (s == null)//2015-01-21 Dzień Babci
                s = "null - Windows 8.1 - brak obsługi 2015-01-21";
        }
        catch (Exception exc)
        {
            string j = "niu reje";
            string xz = "łąd prz";
            //
            MessageBox.Show("B" + xz + "y czyta" + j + "stru: " + exc.Message + ".", this.Text);
        }
        return s;
    }        
    //
0

to jest stara procedura

widoczne są w komentarzach daty: 2011....

obecnie mam inne zabezpieczenia

natomiast w ogóle nie daje się pobrać wartości spod tego klucza: ProductId

być może Windows 8.1 i następne wersje będą blokowały programowy odczyt wartości akurat powyższych kluczy
wnioskuję tak ponieważ odczyt wartości innych kluczy nie stanowi żadnego absolutnie problemu !

0

Korzystając z:

http://www.ultimateprogrammingtutorials.info/2013/05/how-to-get-windows-product-key-in-c.html?m=1
http://stackoverflow.com/questions/6304275/c-sharp-reading-the-registry-productid-returns-null-in-x86-targeted-app-any-c?rq=1

Wyszło mi coś takiego. Odczytuje obie wartości. ProductId i DigitalProductId, który zawiera klucz systemu. Nie wnikałem jakie dokładnie prawa musi mieć konto uruchamiające aplikację. To już sam ustalisz :)

using System;
using System.Collections;
using Microsoft.Win32;

namespace ConsoleApplication1
{
    class Program
    {

        static void Main()
        {
            Console.WriteLine("ProductId: " + GetProductId());
            Console.WriteLine("DigitalProductId: " + DecodeProductKey(GetRegistryDigitalProductId(Key.Windows)));

            Console.ReadLine();
        }

        static string GetProductId()
        {
            var localMachine = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
                    Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32);

            var windowsNtKey = localMachine.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion");

            return windowsNtKey != null ? windowsNtKey.GetValue("ProductId").ToString() : "";
        }

        public enum Key { Windows };

        public static byte[] GetRegistryDigitalProductId(Key key)
        {
            RegistryKey registry = null;

            var localMachine = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
                    Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32);

            switch (key)
            {
                case Key.Windows:
                    registry = localMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", false);
                    break;
            }

            if (registry == null) return null;

            var digitalProductId = registry.GetValue("DigitalProductId") as byte[];

            registry.Close();

            return digitalProductId;
        }

        public static string DecodeProductKey(byte[] digitalProductId)
        {
            const int keyStartIndex = 52;
            const int keyEndIndex = keyStartIndex + 15;
            
            var digits = new[]
            {
               '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 decodeLength = 29;
            const int decodeStringLength = 15;

            var decodedChars = new char[decodeLength];
            var hexPid = new ArrayList();
            
            for (int i = keyStartIndex; i <= keyEndIndex; i++)
            {
                hexPid.Add(digitalProductId[i]);
            }
           
            for (int i = decodeLength - 1; i >= 0; i--)
            {
                if ((i + 1) % 6 == 0)
                {
                    decodedChars[i] = '-';
                }
                else
                {
                    int digitMapIndex = 0;

                    for (int j = decodeStringLength - 1; j >= 0; j--)
                    {
                        int byteValue = (digitMapIndex << 8) | (byte)hexPid[j];
                        
                        hexPid[j] = (byte)(byteValue / 24);
                        
                        digitMapIndex = byteValue % 24;
                        
                        decodedChars[i] = digits[digitMapIndex];
                    }
                }
            }

            return new string(decodedChars);
        }
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1