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

fg85 370 Messages postés dimanche 28 mars 2004Date d'inscription 13 avril 2007 Dernière intervention - 6 oct. 2005 à 08:09 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 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 

8 réponses

Meilleure réponse
cs_Willi 2381 Messages postés jeudi 12 juillet 2001Date d'inscription 13 février 2015 Dernière intervention - 6 oct. 2005 à 16:52
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

Merci cs_Willi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes 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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 déc. 2013 à 16:58
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 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 déc. 2013 à 17:44
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+
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 5/12/2013 à 21:16
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
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 déc. 2013 à 20:57
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.