Janek, First of thank you for your time, and the Ultimate PID Checker is sweet. I too and a developer, and I am working on parsing some product keys within my corporate network, and I am trying to identify the windows version that each key is associated with. I have written the code so far in c# .net, and I am able to get all the Windows 7 Versions without any issue. My question is, would you be willing to share any source, or concepts related to finding the Windows version of a Vista Key or XP Key. I'm not certain if I just need to be using different pidgenx.dll files or if I also need to use different pkeyconfig files. I eagerly anyones response. Thank you very much. Jason
Hi, Janson. I am happy you like my application. Unfortunately, there is no way to quickly determine Windows version of the key - I am just using different pkeyconfig.xrm-ms and pidgen.dll (for XP) files to check if the key is valid for them. That's how my program works in Identify Key mode.
@jstevenson72 pretty hard to get OS version from a key. the key would have to be run against pkeyconfig or pidgen files to see if they answer back.
yeah, I'm already get the windows 7 version, but I need to get XP and Vista versions from my companies keys as well. Can anyone post which config and pidgenx files are required for Xp and Vista? Can someone get me a link? Thanks!
Can you elaborate on which config and pidgen files are needed? Can you upload them or send them to me? Thanks dude!
Hello janek2012 Thank you very much for your great tool. Could you please compile your tool into 64 bit file with only x64 pidgens and pidgenx? Of course it will be working only on x64 OS, but it will resolve this problem. Best regards
Reuploaded! I am sorry but Embarcadero RAD Studio XE2 does not support x64 in C++ it does it only in Delphi. I would have to rewrite my application to Delphi but I don't know this language yet. But I think it could be solved in other way. Stay tuned!
Thank you very much for your efforts janek2012 I will be waiting Good luck P.S. If you need tester, I'll do it with great pleasure I have XP x64 Installed P.P.S. By the way, what is the other way you mean? Very interesting.
From nononsence: Code: Set WshShell = CreateObject("WScript.Shell") MsgBox ConvertToKey(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\DigitalProductId")) Function ConvertToKey(Key) Const KeyOffset = 52 isWin8 = (Key(66) \ 6) And 1 Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4) i = 24 Chars = "BCDFGHJKMPQRTVWXY2346789" Do Cur = 0 X = 14 Do Cur = Cur * 256 Cur = Key(X + KeyOffset) + Cur Key(X + KeyOffset) = (Cur \ 24) Cur = Cur Mod 24 X = X -1 Loop While X >= 0 i = i -1 KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput Last = Cur Loop While i >= 0 If (isWin8 = 1) Then keypart1 = Mid(KeyOutput, 2, Last) insert = "N" KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0) End If a = Mid(KeyOutput, 1, 5) b = Mid(KeyOutput, 6, 5) c = Mid(KeyOutput, 11, 5) d = Mid(KeyOutput, 16, 5) e = Mid(KeyOutput, 21, 5) ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e End Function Nice tool this so i sticky it!!
Code: Set WshShell = CreateObject("WScript.Shell") Key = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\" DigitalID = WshShell.RegRead(key & "DigitalProductId") ProductName = "Product Name: " & WshShell.RegRead(Key & "ProductName") & vbNewLine ProductID = "Product ID: " & WshShell.RegRead(Key & "ProductID") & vbNewLine ProductKey = "Installed Key: " & ConvertToKey(DigitalID) ProductID = ProductName & ProductID & ProductKey If vbYes = MsgBox(ProductId & vblf & vblf & "Save to a file?", vbYesNo + vbQuestion, "Windows Key Information") then Save ProductID End if Function ConvertToKey(Key) Const KeyOffset = 52 isWin8 = (Key(66) \ 6) And 1 Key(66) = (Key(66) And &HF7) Or ((isWin8 And 2) * 4) i = 24 Chars = "BCDFGHJKMPQRTVWXY2346789" Do Cur = 0 X = 14 Do Cur = Cur * 256 Cur = Key(X + KeyOffset) + Cur Key(X + KeyOffset) = (Cur \ 24) Cur = Cur Mod 24 X = X -1 Loop While X >= 0 i = i -1 KeyOutput = Mid(Chars, Cur + 1, 1) & KeyOutput Last = Cur Loop While i >= 0 If (isWin8 = 1) Then keypart1 = Mid(KeyOutput, 2, Last) insert = "N" KeyOutput = Replace(KeyOutput, keypart1, keypart1 & insert, 2, 1, 0) If Last = 0 Then KeyOutput = insert & KeyOutput End If a = Mid(KeyOutput, 1, 5) b = Mid(KeyOutput, 6, 5) c = Mid(KeyOutput, 11, 5) d = Mid(KeyOutput, 16, 5) e = Mid(KeyOutput, 21, 5) ConvertToKey = a & "-" & b & "-" & c & "-" & d & "-" & e End Function Function Save(Data) Const ForWRITING = 2 Const asASCII = 0 Dim fso, f, fName, ts fName = "Windows Key.txt" Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateTextFile fName Set f = fso.GetFile(fName) Set f = f.OpenAsTextStream(ForWRITING, asASCII) f.Writeline Data f.Close End Function
Thank you very much, Daz. Works fine. The script shows also the correct Version ("Windows 8" or "Windows 8 Release Preview") which are both included in the ISO file.
OK, So i solved the graphic glitch when the program starts but I am too lazy (stupid) to fix the function to auto-add dashes. If anybody here knows how to get this done like Microsoft did it in Windows Setup, please contact me ASAP and I will release fixed version Cheers, Janek2012 Edit: I think I got it The next release will be here soon