const char *KeyChars[] = {
"B","C","D","F","G","H","J","K","M",
"P","Q","R","T","V","W","X","Y",
"2","3","4","6","7","8","9",NULL
};
for(ByteCounter=24; ByteCounter >= 0; --ByteCounter)
{
nCur = 0;
for(k=14; k >= 0; --k)
{
nCur = (nCur * 256) ^ ProductKeyExtract[k];
ProductKeyExtract[k] = nCur / 24;
nCur %= 24;
}
strcat(sCDKey, KeyChars[nCur]);
//Insert "-"
if( !(ByteCounter % 5) && ByteCounter )
strcat(sCDKey, "-");
}
這種方法適用于win7系統,但是win8甚至是win10下獲取到的就不準確,應該是另一種演算法,有高手指點一下嗎,個人感覺是KeyChars結構中內容有變化。
uj5u.com熱心網友回復:
頂一個

uj5u.com熱心網友回復:
ProductKeyExtractKeyChars
就這兩個可變的引數,你能確保它有WIn7和Win10都一樣嗎?
uj5u.com熱心網友回復:
目前不清楚為什么獲取到的和系統不一樣,繼續研究中uj5u.com熱心網友回復:
沒人會這個問題嗎uj5u.com熱心網友回復:
誰能解決此問題再給100分uj5u.com熱心網友回復:
for(k=14; k >= 0; --k)
{
nCur = (nCur * 256) ^ ProductKeyExtract[k];
ProductKeyExtract[k] = nCur / 24;
nCur %= 24;
}
關鍵看這里面的計算,是否不同系統下,結果不一樣。。
uj5u.com熱心網友回復:
這樣的計算是很純粹的算術計算,和作業系統沒有關系
uj5u.com熱心網友回復:
所有的計算都在這里。。計算后的值,來獲取陣列的值!!!假設計算的值不同,那陣列是死的。。怎么解釋?
uj5u.com熱心網友回復:
nCur = (nCur * 256) ^ ProductKeyExtract[k]按照你的初始化邏輯,紅色部分是指標值而不是字符值,這是不所要的?
我猜,你正確的初始化應該是
const char *KeyChars[] = {
'B','C',........,NULL
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/61021.html
標籤:硬件/系統
上一篇:矩形邊界
