Récupérer et sauvegarder le nom est la clef Windows de l’ordinateur

Résolu
Dant96 - 3 sept. 2012 à 08:56
 Dant96 - 10 sept. 2012 à 13:46
Bonjour à tous comme dit dans le titre je souhaiterais avec un scripte pouvoir Récupérer et sauvegarder le nom est la clef licence Windows de mon ordinateur. Pour la récupération j'ai pu trouver deux scripte un pour le nom et l'autre pour la clef mais étant tout débutant dans la programmation je me heurte a un petit problème c'est de les regrouper en un seul et surtout de pouvoir sauver sur mon réseau dans un bloc note le résultat.

Voici les deux scriptes

pour la licence

If Wscript.Arguments.Count = 0 Then
strComputer = inputbox("Saisissez le nom de l'ordinateur","Récupérer sa clé Windows XP")
if strComputer = "" then wscript.quit
Else
strCOmputer = Wscript.Arguments.Item(0)
End If
Dim Digits (24)
Digits (0) "B" : Digits (1) "C" : Digits (2) = "D" : Digits (3) = "F" :
Digits (4) "G" : Digits (5) "H" : Digits (6) = "J" : Digits (7) = "K" :
Digits (8) "M" : Digits (9) "P" : Digits (10) = "Q" : Digits (11) = "R" :
Digits (12) "T" : Digits (13) "V" : Digits (14) = "W" : Digits (15) = "X" :
Digits (16) "Y" : Digits (17) "2" : Digits (18) = "3" : Digits (19) = "4" :
Digits (20) "6" : Digits (21) "7" : Digits (22) = "8" : Digits (23) = "9"
Dim HexBuf (100), HexDigitalPID (15)
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\default:StdRegProv")
objReg.GetBinaryValue &H80000002, "SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DigitalProductId", HexBuf
StartOffset 52 : EndOffset67
For i = StartOffset to EndOffset
HexDigitalPID (i-StartOffset) = HexBuf(i)
next
dLen 29 : sLen 15
keygen =""
for i=dLen-1 to 0 step -1
if ((i + 1) mod 6) = 0 then
keygen = keygen & "-"
else
HN = 0
For N = (sLen -1) to 0 step -1
Value = ( (HN *2^8 ) Or HexDigitalPID (N))
HexDigitalPID (N) = Value \ 24
HN = (Value mod 24)
next
keygen = keygen & Digits(HN)
end if
next
keygen2 = StrReverse (keygen)
WScript.Echo keygen2

et pour le nom

Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domaine = " & WshNetwork.UserDomain &vbCr&_
"Nom ordinateur = " & WshNetwork.ComputerName &vbCr&_
"Nom utilisateur = " & WshNetwork.UserName
Set WshNetwork = Nothing

autre petit question je ne veus garder que le Nom de l'ordinateur mais quand je veus suprimer les 2 autre ligne le scripte ne marche plus et j'arrive pas a comprendre pourquoi

Merci d'avance de vos réponses

13 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
3 sept. 2012 à 09:23
Bonjour Dant96

Pour Enchainer les deux scripts, il suffit de
[*] rassembler les déclarations et qu'elles ne soient pas redondantes mais vbscript étant permissif les déclarations ne sont pas obligatoires
[*] concaténer les lignes de code ce qui est quasiment déjà fait dans ton post

Pour écrire la clé et le nom de l'ordinateur dans un fichier , il faut utiliser "Scripting.FileSystemObject"


fs=CreateObject("Scripting.FileSystemObject")
set fname = fs.OpenTextFile("c:\test.txt",0,True)
fname.WriteLine(KeyGen2 & " " & WshNetwork.ComputerName )
fname.Close
set fs=Nothing

Attention, Le souligné en fin d'une ligne permet d'écrire la ligne de code sur plusieurs lignes physiques.

Donc :
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domaine = " & WshNetwork.UserDomain &vbCr&_
"Nom ordinateur = " & WshNetwork.ComputerName &vbCr&_
"Nom utilisateur = " & WshNetwork.UserName
Set WshNetwork = Nothing


devient si UserName n'est pas utile (mais tu ne veux pas faire de commande Echo (affichage écran) mais des écritures disques

Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domaine = " & WshNetwork.UserDomain & vbCr & _
"Nom ordinateur " & WshNetwork.ComputerName Set WshNetwork Nothing

A toi de recoller
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 sept. 2012 à 11:42
Salut

Merci d'utiliser la coloration syntaxique (3ème icone à droite) pour coller du code.
Perso, je n'ai aucun courage à lire ces lignes sans indentation ni repère.

Si tu t'adresses à la machine locale, il n'est pas nécessaire de préciser le nom de la machine que tu peux remplacer par un point :
"winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
3 sept. 2012 à 14:44
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set WshNetwork = WScript.CreateObject("WScript.Network")
set fs=CreateObject("Scripting.FileSystemObject")
set fname = fs.OpenTextFile("test.txt",ForAppending,True)
fname.WriteLine( KeyGen2 & vbCrLf & WshNetwork.ComputerName )
fname.Close
set fs=Nothing
3
bonjour loulou69

Merci beaucoup pour ta réponse rapide

j'ai tester d'enchainer les commande, mais je doit avouer sans trop de résultat donc je pense que je mis prend très mal car j'ai en premier lieu tenter de faire fusionner les scripte du nom et de la clef alors il me donne bien le nom de mon pc mais au moment de me donner la clef ça bug voici ce que j'ai « tenter » de fair

Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Nom ordinateur = " & WshNetwork.ComputerName
Dim Digits (24)
Digits (0) "B" : Digits (1) "C" : Digits (2) = "D" : Digits (3) = "F" :
Digits (4) "G" : Digits (5) "H" : Digits (6) = "J" : Digits (7) = "K" :
Digits (8) "M" : Digits (9) "P" : Digits (10) = "Q" : Digits (11) = "R" :
Digits (12) "T" : Digits (13) "V" : Digits (14) = "W" : Digits (15) = "X" :
Digits (16) "Y" : Digits (17) "2" : Digits (18) = "3" : Digits (19) = "4" :
Digits (20) "6" : Digits (21) "7" : Digits (22) = "8" : Digits (23) = "9"
Dim HexBuf (100), HexDigitalPID (15)
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "\root\default:StdRegProv")
objReg.GetBinaryValue &H80000002, "SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DigitalProductId", HexBuf
StartOffset 52 : EndOffset67
For i = StartOffset to EndOffset
HexDigitalPID (i-StartOffset) = HexBuf(i)
next
dLen 29 : sLen 15
keygen =""
for i=dLen-1 to 0 step -1
if ((i + 1) mod 6) = 0 then
keygen = keygen & "-"
else
HN = 0
For N = (sLen -1) to 0 step -1
Value = ( (HN *2^8 ) Or HexDigitalPID (N))
HexDigitalPID (N) = Value \ 24
HN = (Value mod 24)
next
keygen = keygen & Digits(HN)
end if
next
keygen2 = StrReverse (keygen)
WScript.Echo keygen2

mais je pense que ca bug aussi car je sait pas si tu la vu mais quand tu lance le scripte pour trouver la clef win il te demande le nom de ton pc alors j’ai tenter de remplacer les ligne ou ca me le demande par le scripte de recherche du nom mais ca marche pas terrible.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
3 sept. 2012 à 11:30
je n'essaye pas de faire tourner le code

La variable strComputer n'est pas initialisée si je ne me trompe

Set objReg = GetObject("winmgmts...." & strComputer ....

Normal?
0
Pour être tout a fait honnête avec toi je ne pourrais pas te dire si c’est normal ou pas car je l’ai recup sur le site de Microsoft mais en tout cas j’ai tester la formule sur plusieurs machine et en tout cas elle marche super
0
Bonjour jack

Je viens de voir que j'ai oublié de vous dire qu'elle sera l'utilisation de c'est scripte ça pourrait aider ^^

Alors dans ma boite on doit formater et réinstaller un très grand nombre de pc a peut près 400 et pour chaque ordinateur installer on doit récupérer son nom et sa clef licence pour les sauver dans les document de l'ordi et les sauver dans un bloc note ou au mieux sur un fichier excel qui ce trouve sur le réseaux donc je cherche un moyen de pouvoir faire tout ca en une fois avec un scripte
0
je viens de tester avec ton scripte ça marche super merci jack

j'ai juste encore un problème avec pour le script de sauvegarde que ma donner loulou69 quand je veux la lancer ça me dit

"cet objet ne gère pas cette propriété ou cette méthode: 'fs'"
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 sept. 2012 à 14:23
Il te faut ajouter la référence à "Microsoft Scripting Runtime" qui est le fichier "scrrun.dll" (sous System32 ou SysWOW64 selon l'OS)
Mais je ne sais pas comment on fait en VBScript.
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
3 sept. 2012 à 14:29
Non en vbScript on ajoute pas de référence Jack
Par contre j'ai une erreur à la première ligne

Il y a
fs=CreateObject("Scripting.FileSystemObject")
Il faut

Set fs=CreateObject("Scripting.FileSystemObject")
0
je vien de faire le changement en effet j'ai plus le problèmes avec fs mais il me met ce coup ci

argument ou appel de procédure incorrect
0
Merci beaucoup pour votre aide ca marche super
0
Bonjour à tous

je revient car j'ai encore besoin de votre aide pour deux choses.
La première c'est que quand je lance mon scripte il m'affiche en premier lieu le nom et après la clef licence je souhaiterai donc savoir s'il est possible de les avoir dans une seul fenêtre au lieu de deux et la deuxième c'est que suit à une demande de mon patron d'enregistrer le résultat dans Excel j'ai tenté de le faire mais pour une raison inconnu après avoir lancé le scripte je vais dans Excel et il y a rien est vbs ne m'indique aucune erreurs.

voici mon scripte

Set WshNetwork = WScript.CreateObject("WScript.Network")
    WScript.Echo "Nom ordinateur = " & WshNetwork.ComputerName        
Dim Digits (24)
    Digits (0) "B" : Digits (1) "C" : Digits (2) = "D" : Digits (3) = "F" :
    Digits (4) "G" : Digits (5) "H" : Digits (6) = "J" : Digits (7) = "K" :
    Digits (8) "M" : Digits (9) "P" : Digits (10) = "Q" : Digits (11) = "R" :
    Digits (12) "T" : Digits (13) "V" : Digits (14) = "W" : Digits (15) = "X" :
    Digits (16) "Y" : Digits (17) "2" : Digits (18) = "3" : Digits (19) = "4" :
    Digits (20) "6" : Digits (21) "7" : Digits (22) = "8" : Digits (23) = "9"
Dim HexBuf (100), HexDigitalPID (15)
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
    objReg.GetBinaryValue &H80000002, "SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DigitalProductId", HexBuf
    StartOffset 52 : EndOffset67
For i = StartOffset to EndOffset
    HexDigitalPID (i-StartOffset) = HexBuf(i)
next
    dLen 29 : sLen 15
    keygen =""
for i=dLen-1 to 0 step -1
    if ((i + 1) mod 6) = 0 then
        keygen = keygen & "-"
    else
        HN = 0
    For N = (sLen -1) to 0 step -1
        Value = ( (HN *2^8 ) Or HexDigitalPID (N))
        HexDigitalPID (N) = Value \ 24
        HN = (Value mod 24)
    next
        keygen = keygen & Digits(HN)
    end if
next
    keygen2 = StrReverse (keygen)
    WScript.Echo keygen2
Const ForReading 1, ForWriting 2, ForAppending = 8
Set WshNetwork = WScript.CreateObject("WScript.Network")
set fs=CreateObject("Scripting.FileSystemObject")
set fname = fs.OpenTextFile("teste dif.XLS",ForAppending,True)
fname.WriteLine( WshNetwork.ComputerName & " ; " & KeyGen2 )
fname.Close
set fs=Nothing


Merci d'avance
0
Rejoignez-nous