Récupérer la clé windows actuelle [Résolu]

Messages postés
370
Date d'inscription
dimanche 28 mars 2004
Dernière intervention
13 avril 2007
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 5 déc. 2013 à 20:57
Bonjour, j'ai un très gros problème, et je sait que c'est faisable,
mais je ne pense pas avoir les capacités pour le résoudre seul .

Dans un programme en VB6, il me faudrai récupérer la clé de Windows
dans une variable type String pour pouvoir ensuite l'afficher.



Est-ce que quelqu'un peut m'aider ?



Merci beaucoup d'avance
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
2382
Date d'inscription
jeudi 12 juillet 2001
Dernière intervention
15 décembre 2018
3
Merci
Met ce code dans un module
8<-----------------------------------------------------------
Option Explicit
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that If you declare the lpData parameter as String, you must pass it By Value.
Private Const REG_BINARY = 3
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const ERROR_SUCCESS = 0&

Public xpcdkeyview As String

Public Function sGetXPCDKey() As String
'Read the value of:
'HKLM\SOFTWARE\MICROSOFT\Windows NT\Curr
' entVersion\DigitalProductId
Dim bDigitalProductID() As Byte
Dim bProductKey() As Byte
Dim ilByte As Long
Dim lDataLen As Long
Dim hKey As Long
'Open the registry key: HKLM\SOFTWARE\MI
' CROSOFT\Windows NT\CurrentVersion

If RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion", hKey) = ERROR_SUCCESS Then
lDataLen = 164
ReDim Preserve bDigitalProductID(lDataLen)
'Read the value of DigitalProductID

If RegQueryValueEx(hKey, "DigitalProductId", 0&, REG_BINARY, bDigitalProductID(0), lDataLen) = ERROR_SUCCESS Then
'Get the Product Key, 15 bytes long, off
' set by 52 bytes
ReDim Preserve bProductKey(14)

For ilByte = 52 To 66
bProductKey(ilByte - 52) = bDigitalProductID(ilByte)
Next ilByte
Else
'ERROR: Could not read "DigitalProductID
' "
sGetXPCDKey = ""
Exit Function
End If
Else
'ERROR: Could not open "HKLM\SOFTWARE\MI
' CROSOFT\Windows NT\CurrentVersion"
sGetXPCDKey = ""
Exit Function
End If
'Now we are going to 'base24' decode the
' Product Key
Dim bKeyChars(0 To 24) As Byte
'Possible characters in the CD Key:
bKeyChars(0) = Asc("B")
bKeyChars(1) = Asc("C")
bKeyChars(2) = Asc("D")
bKeyChars(3) = Asc("F")
bKeyChars(4) = Asc("G")
bKeyChars(5) = Asc("H")
bKeyChars(6) = Asc("J")
bKeyChars(7) = Asc("K")
bKeyChars(8) = Asc("M")
bKeyChars(9) = Asc("P")
bKeyChars(10) = Asc("Q")
bKeyChars(11) = Asc("R")
bKeyChars(12) = Asc("T")
bKeyChars(13) = Asc("V")
bKeyChars(14) = Asc("W")
bKeyChars(15) = Asc("X")
bKeyChars(16) = Asc("Y")
bKeyChars(17) = Asc("2")
bKeyChars(18) = Asc("3")
bKeyChars(19) = Asc("4")
bKeyChars(20) = Asc("6")
bKeyChars(21) = Asc("7")
bKeyChars(22) = Asc("8")
bKeyChars(23) = Asc("9")
Dim nCur As Integer
Dim sCDKey As String
Dim ilKeyByte As Long
Dim ilBit As Long

For ilByte = 24 To 0 Step -1
'Step through each character in the CD k
' ey
nCur = 0

For ilKeyByte = 14 To 0 Step -1
'Step through each byte in the Product K
' ey
nCur = nCur * 256 Xor bProductKey(ilKeyByte)
bProductKey(ilKeyByte) = Int(nCur / 24)
nCur = nCur Mod 24
Next ilKeyByte
sCDKey = Chr(bKeyChars(nCur)) & sCDKey If ilByte Mod 5 0 And ilByte <> 0 Then sCDKey "-" & sCDKey
Next ilByte
sGetXPCDKey = sCDKey
xpcdkeyview = sGetXPCDKey


End Function
----------------------------------------------------------->8

Pour l'utiliser:
8<-----------------------------------------------------------
sGetXPCDKey
MsgBox xpcdkeyview
----------------------------------------------------------->8


Si la réponse te conviens merci de l'accepter

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

0
Merci
Je sais que le sujet est un peut mort mais comme le code m'intéresse, je me permet de le relancer.

J'ai mis ton code mais Visual Basic me signale des erreurs à ce niveau :
sCDKey = Chr(bKeyChars(nCur)) & sCDKey If ilByte Mod 5 0 And ilByte <> 0 Then sCDKey "-" & sCDKey 

Une idée ???

Merci d'avance
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour, MOI,
1) L'erreur faite sur la ligne dénoncée est trop flagrante pour que j'ose imaginer que tu es vraiment un développeur.
2) Que cherches-tu donc ?
On veut bien t'aider ici à trouver l'identificateur de Windows (ProductId)...
Pour ce qui est de sa clé, c'est autre chose et il va te falloir nous donner une très bonne raison valable. Quelle est donc très clairement cette fameuse raison ?
0
Merci
Bonjour ucfoutu

1) Non je ne suis pas développeur (je ne pensais pas qu'il fallait l'être pour venir sur ce forum) mais excuse moi d'apprendre
L'erreur est peut être flagrante pour toi mais pas pour tout le monde et je suis sur que je suis pas le seul
Moi, j'aurais plutôt écris :
sCDKey = Chr(bKeyChars(nCur)) & sCDKey
If ilByte Mod 5 0 And ilByte <> 0 Then sCDKey "-" & sCDKey
Mais pour moi, il y a aussi un problème ici :
Mod 5 0 And
Je peut me tromper et il y à peut être autre chose mais je ne vois pas.

2) Mes raison sont simple: apprendre
J'aurais voulu faire un petit soft qui permettrait de retrouver la clé de son OS et d'autres infos comme la version de Windows et autre en fonction de la difficulté.
Rien de plus.

Merci d'avance de ton aide
Bonne soirée
A+
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
-
Je suis alors vraiment désolé, mais ta justification ton point 2) ne me va pas du tout.
Si tu veux apprendre, commence donc pas des choses plus simples et fais-le pas à pas.
Retrouver la clé de son OS est assez étrange, comme demande et n'est pas "justifié" ! Lorsque je veux connaître la mienne, je la lis sur la license (tu sais ? Ce que je suis censé pouvoir présenter à tout instant; en cas de contrôle).
Etudie bien.
J'ai déjà des bases, je me suis fait quelques soft mais j'ai vu se sujet et il m'intéressait.
Malheureusement, je ne suis pas un pro.
Je peut me tromper mais à première vu, je me dit que tu veux pas m'aider et que n'importe quel argument ne justifiera pas ton aide.

Malgré tout, je comprend ta réticence à donner un code qui permet de trouver un tél renseignement.

Si vraiment je voulais simplement trouver une clé Windows, j'aurais cas télécharger un logiciel (il y en plein le net).

Bref, c'est pas grave car je pense que tu ne changera pas d'avis.

A+
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Lorsque l'on veut "piquer" une clé, mais qu'en même temps, on se demande ce qui peut "clocher" dans :
"If ilByte Mod 5 0 And ilByte <> 0 Then sCDKey "-" & sCDKey"
c'est que l'on n'a jamais rien compris véritablement de ce que l'on a pu "pêcher" ici ou là ... et que l'on a en fait aucune idée de la logique même d'un langage de développement !
Alors : je ne sais pas quels "softs" tu as pu "te faire" (comme tu dis), mais je devine qu'ils ne peuvent être que l'assemblage (voire la simple copie) de bouts de codes pêchés et incompris.
Il manque deux caractères dans la ligne de code concernée. Il est probable que le "champion" qui a montré ce code plus haut était lui-même dans le cas d'un simple "copieur/colleur". Je sais qu'il s'est depuis très nettement amélioré (il a probablement bûché, depuis).
J'ai par ailleurs noté ailleurs dans son code un indice assez clair (une redondance totalement inutile) de ce qu'il était à l'époque encore dans l'ignorance du rôle précis d'une fonction. J'espère (en fait, je le sais) pour lui qu'il est un jour devenu un véritable développeur, chose que j'espère également pour toi et que tu n'atteindras toutefois que si tu sais apprendre le B.A.BA avant de tenter de faire de l'époustouflant.
Je sais... Je sais ... il fait pour cela bosser un peu et c'est toujours embêtant d'avoir à bosser, mais c'est inévitable. A toi de commencer par là où il convient de commencer.
Bonne chance.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Et en plus :
Tout le code présenté dans cette discussion ouverte dans la section VB.Net est du code ... VB6 , hein ... (avec ses fautes, en plus !) !!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.