Я использовал приведенный ниже код, чтобы получить лицензионный ключ Windows. Это работало довольно хорошо. Но теперь я обнаружил, что он работает на Windows XP (x86), но не на Windows 7 x64.C# get Windows CD Key
Причина: Значение регистра DigitalProductID
содержит только нули в диапазоне, который мы ищем в 64-разрядной операционной системе. Поэтому результат BBBBB-BBBBB-BBBBB-BBBBB-BBBBB
. Почему это так и как я могу это исправить?
public static string LicenseCDKey
{
get
{
try
{
byte[] rpk = (byte[])Registry.LocalMachine
.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion")
.GetValue("DigitalProductId");
string serial = "";
const string possible = "BCDFGHJKMPQRTVWXY2346789";
for (int i = 0; i < 25; i++)
{
int accu = 0;
for (int a = 0; a < 15; a++)
{
accu <<= 8;
accu += rpk[66 - a];
rpk[66 - a] = (byte)(accu/24 & 0xff);
accu %= 24;
}
serial = possible[accu] + serial;
if (i % 5 == 4 && i < 24)
{
serial = "-" + serial;
}
}
return serial;
}
catch
{
return ErrorString;
}
}
}
ли вы изменить выход на x64 вместо любого процессора для целевой платформы? –
Нет, поскольку я ответил на оба ниже ответа, я использую AnyCPU. – bytecode77