FreemanRU
Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору GetXPKey.js Код: var WshShell = WScript.CreateObject("WScript.Shell"); var bTempKey = VBArray(WshShell.RegRead("HKLM\\SOFTWARE\\MICROSOFT\\Windows NT\\CurrentVersion\\DigitalProductId")); var bKey = new Array bKey = bTempKey.toArray(); var KeyBase = new Array('B', 'C', 'D', 'F', 'G', 'H', 'J','K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X', 'Y', '2', '3', '4', '6', '7', '8', '9'); var dLen = 29; var sLen = 15; var Dst = new Array(dLen); var StartOffset = 0x34; var EndOffset = 0x34 + 15 var Src = new Array(15); for (var i = StartOffset; i<=EndOffset; i++) { Src[i-StartOffset] = bKey[i] } for (var i = dLen - 1; i>=0; i--) { if (((i + 1) % 6) == 0) { Dst[i] = '-'; } else { var HN = 0; for (var n = sLen - 1; n>=0; n--) { var Value = (HN << 8) | Src[n]; Src[n] = Value / 24; HN = Value % 24; } Dst[i] = KeyBase[HN]; } } var str = ""; for (i = 0; i<=dLen-1; i++) { str += Dst[i]; } WScript.Echo(str) // (c) FreemanRU. ru-board | После небольшой переделки позволяет также смотреть ключи Office XP и 2003. Ключ в реестре: HKLM\SOFTWARE\MICROSOFT\Office\XX.0\Registration\'GUID'\DigitalProductId где: XX - 10 для Office XP или 11 для Office 2003 'GUID' - индетификатор продукта. Чтобы узнать все ключи, надо делть enumerate Узнать имя продукта можно из HKLM\SOFTWARE\MICROSOFT\Office\XX.0\Registration\'GUID'\ProductName Принимаются предложения. PS В VBScript похоже реализовать это нельзя, т.к. в нем нет функции "битовое OR" Если кто знает, как можно реализовать "битовое OR" в VBScript - напишите. Буду очень признателен. | Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 16:40 22-08-2005 | Исправлено: FreemanRU, 17:01 22-08-2005 |
|