Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 2000/XP (http://forum.oszone.net/forumdisplay.php?f=6)
-   -   [решено] Как узнать ключ продукта установленной ОС (http://forum.oszone.net/showthread.php?t=120207)

Sirko9 16-10-2008 12:18 925365

[решено] Как узнать ключ продукта установленной ОС
 
забыл, где можно посмотреть ключ продукта? :search:

Petya V4sechkin 16-10-2008 12:22 925370

RockXP
ProduKey
и т. д.

garey 29-01-2012 19:56 1847099

Можно при помощи вот такого скрипта:
читать дальше »

Код:

'==========================================================================
' NAME      :  SoftWareAudit.vbs
' AUTHOR    :  Павел Б.
' DATE      :  29.01.2009
'
' COMMENT  :  используется для проведения инвентаризации программного
'              обеспечения
'==========================================================================
ResultReWrite = 0  'флаг перезаписи фаила результатов 1 - перезапись 0 -нет
strPathFileResultat =".\"' "C:\" '".\" \\domenserver\datainventory$\ здесь указываем путь куда будут сохраняться отчёты по инветаризации ПО
strRazdelitel = vbTab '";"'vbTab 'для разделения полей применить символ табуляции (vbTab)
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_USERS = &H80000003
Dim strSearchKey(100)
Dim strKey_soft
Dim sSoftware(200,3), sSoftware_i 'значения массива с данными ProductId и LicenseKey, счетчика текущей строки массива
strComputer = "."
sSoftware_i = 0
strRegKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"  'strKey
strWinkey = "SOFTWARE\Microsoft\Windows NT\CurrentVersion"
strSearchKey(1) = "DisplayName"
strSearchKey(2) = "QuietDisplayName"
strSearchKey(3) = "InstallDate"
strSearchKey(4) = "DisplayVersion"
strSearchKey(5) = "VersionMajor"
strSearchKey(6) = "VersionMinor" 
strSearchKey(7) = "EstimatedSize"
strSearchKey(8) = "ProductID"
strSearchKey(9) = "DigitalProductId"
strSearchKey(10) = "DisplayVersion"
strSearchKey(11) = "ProductName"       
strDate = DateFormat(Date)
strTime = TimeFormat(Time)
strParamComputerName = "не_найдено"
strFull = ""
strMACadress = ""
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objReg      =  GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")
Set colSettings =  objWMIService.ExecQuery ("SELECT * FROM Win32_ComputerSystem")
Set colSoftware =  objWMIService.ExecQuery ("SELECT * FROM Win32_Product") 
Set colItems    =  objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration",,48) 
Dim oWS : Set oWS = CreateObject("WScript.Shell")
Dim oFSO : Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim i, ii                          'просто счётчик
Dim sRegTitle, sRegKey              'переменные для работы cо строками выгруженного реестра
Dim objLineText, LineText          'переменные для загрузки информации из техтового файла (ansi)
Dim shDefKey
sRegDataSearch=Array("HKEY_CURRENT_USER","HKEY_USERS","HKEY_LOCAL_MACHINE","HKEY_CLASSES_ROOT","HKEY_CURRENT_CONFIG") ' используються при выгрузке реестра
strPath = oWS.Environment("Process")("Temp")
For i=0 To UBOUND(sRegDataSearch)
oWS.Run "regedit /e /a " & strPath & "\" & sRegDataSearch(i)& ".tmp " & sRegDataSearch(i), , True 'выгрузка реестра в файлы (ansi) для поиска
With oFSO.GetFile(strPath & "\" & sRegDataSearch(i) & ".tmp ")
objLineText = Split(.OpenAsTextStream(1, 0).Read(.Size), vbcrlf)
End With
oFSO.DeleteFile(strPath & "\" & sRegDataSearch(i) & ".tmp ") 'удаление не нужных файлов
For Each LineText In objLineText
If InStr(1,LineText,"[",1) > 0 Then 
sRegTitle = LineText
End if
If InStr(1,LineText,strSearchKey(9),1) > 0 Then
If sRegTitle <> LineText Then
If (InStr(1,sRegTitle,"[") > 0) And (InStr(1,sRegTitle,"]") > 0) Then
sRegTitle = Mid(sRegTitle, InStr(1,sRegTitle,"[")+1, InStr(1,sRegTitle,"]")-InStr(1,sRegTitle,"[")-1)
GetDataReg (sRegTitle)
End If 
End If
End If
Next
Erase objLineText
Next
objReg.EnumKey HKLM, strRegKey, arrSubkeys
For Each objItem in colItems
If objItem.DNSHostName <> "" Then
If strMACadress <> "" Then strMACadress = strMACadress & "," End If
strMACadress = strMACadress & objItem.MACAddress                       
End If       
Next
For Each objComputer In colSettings
strComputerRole =  "88" 'значение для нераcпределенного ПК
strUserName = objComputer.UserName
strParamComputerName = objComputer.Name
Select Case objComputer.DomainRole 
Case 0 strComputerRole = "01"'"Standalone Workstation" одиночный ПК
Case 1 strComputerRole = "02"'"Member Workstation" доменный ПК
Case 2 strComputerRole = "11"'"Standalone Server" одиночный сервер
Case 3 strComputerRole = "12"'"Member Server" - сервер домена
Case 4 strComputerRole = "13"'"Backup Domain Controller" - Сервер BDC
Case 5 strComputerRole = "14"'"Primary Domain Controller" - Сервер PDC
End Select
Next
If ResultReWrite = 0 Then
strFileSoftwareAudit = strPathFileResultat & "SoftwareAudit_" & strParamComputerName & "_" & strDATE &  strTime & ".txt"
Else
strFileSoftwareAudit = strPathFileResultat & "SoftwareAudit_" & strParamComputerName & ".txt"
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.CreateTextFile(strFileSoftwareAudit, True)
Set objReg = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv")
On Error Resume Next 
For Each objOS in GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")
strFull = _
strComputerRole & _
strRazdelitel & strParamComputerName & _
strRazdelitel & strMACadress & _
strRazdelitel & strUserName & _
strRazdelitel & objOS.Caption & _
strRazdelitel & objOS.Version & _
strRazdelitel & Mid(objOS.InstallDate,1,8) & _
strRazdelitel & objOS.SerialNumber & _
strRazdelitel & GetKey(oWS.RegRead("HKLM\" & strWinkey & "\" & strSearchKey(9)))
If strFull <> "" Then objTextFile.WriteLine strFull End If           
Next
'назначение ПК (01,02 - ПК, 11,12,13,14 - сервер)
'сетевое имя ПК
'MAC адрес ПК
'пользователь ПК (текущий на момент аудита)
'лицензионное наименование ПО
'версия ПО
'дата установки ПО
'PID ПО
'лицензионный ключ ПО
objReg.EnumKey HKEY_LOCAL_MACHINE, strRegKey, arrSubkeys
For Each strSubkey In arrSubkeys
If objReg.GetStringValue(HKEY_LOCAL_MACHINE, strRegKey & strSubkey, strSearchKey(1), strValue1) <> 0 Then 
objReg.GetStringValue HKEY_LOCAL_MACHINE, strRegKey & strSubkey, strSearchKey(2), strValue1 
End If 
objReg.GetStringValue HKEY_LOCAL_MACHINE, strRegKey & strSubkey, strSearchKey(3), strValue2
objReg.GetDWORDValue  HKEY_LOCAL_MACHINE, strRegKey & strSubkey, strSearchKey(5), intValue3
objReg.GetDWORDValue  HKEY_LOCAL_MACHINE, strRegKey & strSubkey, strSearchKey(6), intValue4
objReg.GetDWORDValue  HKEY_LOCAL_MACHINE, strRegKey & strSubkey, strSearchKey(7), intValue5
objReg.GetStringValue HKEY_LOCAL_MACHINE, strRegKey & strSubkey, strSearchKey(8), intValue6
objReg.GetStringValue HKEY_LOCAL_MACHINE, strRegKey & strSubkey, strSearchKey(10), intValue10
If strValue1 <> ""  Then   
For i = 0 To sSoftware_i
If strValue1 = sSoftware(i,3) Or intValue6 = sSoftware(i,1)  Then 
strKey_soft = sSoftware(i,2) 
intValue6 = sSoftware(i,1)
End If
Next
End If
If intValue10 = "" Then intValue10 = intValue3 & "." & intValue4  End If
strFull = _
strComputerRole & _
strRazdelitel & strParamComputerName & _
strRazdelitel & strMACadress & _       
strRazdelitel & strUserName & _
strRazdelitel & strValue1 & _
strRazdelitel & intValue10 & _
strRazdelitel & strValue2 & _
strRazdelitel & intValue6 & _
strRazdelitel & strKey_soft
If strValue1 <> "" Then objTextFile.WriteLine strFull End If
strKey_soft = ""
intValue6 = ""
'назначение ПК (01,02 - ПК, 11,12,13,14 - сервер)
'сетевое имя ПК
'MAC адрес ПК
'пользователь ПК (текущий на момент аудита)
'лицензионное наименование ПО
'версия ПО
'дата установки ПО
'PID ПО
'лицензионный ключ ПО
Next
objTextFile.Close
Cleanup()
Sub Cleanup()
Set oWS = Nothing
Set oFSO = Nothing
WScript.Quit
End Sub
 
Function GetKey(rpk)
 
Dim szPossibleChars, dwAccumulator, j, i, szProductKey
Const rpkOffset=52:i=28
szPossibleChars="BCDFGHJKMPQRTVWXY2346789" 
Do 'Rep1
dwAccumulator=0 : j=14
Do 
dwAccumulator=dwAccumulator*256 
dwAccumulator=rpk(j+rpkOffset)+dwAccumulator
rpk(j+rpkOffset)=(dwAccumulator\24) and 255 
dwAccumulator=dwAccumulator Mod 24
j=j-1
Loop While j>=0
i=i-1 : szProductKey=mid(szPossibleChars,dwAccumulator+1,1)&szProductKey
if (((29-i) Mod 6)=0) And (i<>-1) then 
i=i-1 : szProductKey="-"&szProductKey
End If
Loop While i>=0 'Goto Rep1 
GetKey=szProductKey
End Function
 
Function FormatNum(NumVal)
strNum = Trim(NumVal)
If Len(strNum) = 1 Then strNum = "0" + strNum
FormatNum = strNum
End Function
 
Function DateFormat(DateVal)
strNY = FormatNum(Year(DateVal))
strNM = FormatNum(Month(DateVal))
strND = FormatNum(Day(DateVal))
'DateFormat = strNY + "_" + strNM + "_" + strND
DateFormat = strNY + strNM + strND
End Function
 
Function TimeFormat(TimeVal)
strNH = FormatNum(Hour(TimeVal))
strNMin = FormatNum(Minute(TimeVal))
strNS = FormatNum(Second(TimeVal))
'TimeFormat = strNH + "_" + strNMin + "_" + strNS
TimeFormat = strNH + strNMin + strNS
End Function
 
Function GetDataReg (ssRegTitle)
Dim sID_soft, sKey_soft, sName_soft
sID_soft = ""
sKey_soft = ""
sName_soft = ""
sRegTitle = ssRegTitle
Select Case Mid(sRegTitle, 1, InStr(1,sRegTitle,"\")-1)
Case "HKEY_CURRENT_USER"
shDefKey=HKEY_CURRENT_USER
Case "HKEY_USERS"
shDefKey=HKEY_USERS
Case "HKEY_LOCAL_MACHINE"
shDefKey=HKEY_LOCAL_MACHINE
Case "HKEY_CLASSES_ROOT"
shDefKey=HKEY_CLASSES_ROOT
Case "HKEY_CURRENT_CONFIG"
shDefKey=HKEY_CURRENT_CONFIG
End Select 
If objReg.EnumValues (shDefKey, Mid(sRegTitle, InStr(1,sRegTitle,"\")+1, Len(sRegTitle)-InStr(1,sRegTitle,"\")), arrEntryNames, arrValueTypes) = 0 Then
For ii=0 To UBound(arrEntryNames)
If (LCase(arrEntryNames(ii)) = LCase(strSearchKey(8))) And (arrValueTypes(ii)= 1) Then 
sID_soft = oWS.RegRead(sRegTitle & "\" & strSearchKey(8))
End If
If (LCase(arrEntryNames(ii)) =  LCase(strSearchKey(9))) And (arrValueTypes(ii)= 3) Then
sKey_soft = GetKey(oWS.RegRead(sRegTitle & "\" & strSearchKey(9)))
End If
If (LCase(arrEntryNames(ii)) =  LCase(strSearchKey(11))) And (arrValueTypes(ii)= 1) Then
sName_soft = oWS.RegRead(sRegTitle & "\" & strSearchKey(11))
End If
Next
End If
If (sID_soft <> "") And (sKey_soft <> "") Then
sSoftware(sSoftware_i,1) = sID_soft
sSoftware(sSoftware_i,2) = sKey_soft
sSoftware(sSoftware_i,3) = sName_soft
sSoftware_i = sSoftware_i + 1
End If
End Function



Плюс за одно покажет какие проги установленны

Silumin 30-01-2012 18:40 1847770

Petya V4sechkin,
У меня на ProduKey ругается антивирус. Это нормально?

Petya V4sechkin 30-01-2012 18:43 1847773

Silumin, нормально, документацию почитайте:

Цитата:

Цитата Nir Sofer
When running produkey.exe, Some Antivirus programs displays an alert and/or block you from running it. Click here to read more about false alerts in Antivirus programs


Silumin 30-01-2012 18:49 1847780

Спасибо я так и подумал.

pingUIN 15-04-2016 17:24 2626554

Цитата:

Цитата garey
Можно при помощи вот такого скрипта: »

Уважаемый, подскажите, пожалуйста имя файла каким образом задать, в котором будет содержаться отчет?
С лёту, понять не могу.

Iska 15-04-2016 20:56 2626623

Цитата:

Цитата pingUIN
Уважаемый, подскажите, пожалуйста имя файла каким образом задать, в котором будет содержаться отчет?
С лёту, понять не могу. »

Имя файла определяется здесь:
Код:

If ResultReWrite = 0 Then
        strFileSoftwareAudit = strPathFileResultat & "SoftwareAudit_" & strParamComputerName & "_" & strDATE &  strTime & ".txt"
Else
        strFileSoftwareAudit = strPathFileResultat & "SoftwareAudit_" & strParamComputerName & ".txt"
End If

Путь «strPathFileResultat» к нему — выше:
Код:

strPathFileResultat =".\"' "C:\" '".\" \\domenserver\datainventory$\ здесь указываем путь куда будут сохраняться отчёты по инветаризации ПО


Время: 16:27.

Время: 16:27.
© OSzone.net 2001-