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

Dant96 - 3 sept. 2012 à 08:56 - Dernière réponse :  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
Afficher la suite 

13 réponses

Répondre au sujet
cs_loulou69 672 Messages postés mercredi 22 janvier 2003Date d'inscription 2 juin 2016 Dernière intervention - 3 sept. 2012 à 09:23
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_loulou69
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 3 sept. 2012 à 11:42
+3
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Jack
cs_loulou69 672 Messages postés mercredi 22 janvier 2003Date d'inscription 2 juin 2016 Dernière intervention - 3 sept. 2012 à 14:44
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_loulou69
0
Utile
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.
Commenter la réponse de Dant96
cs_loulou69 672 Messages postés mercredi 22 janvier 2003Date d'inscription 2 juin 2016 Dernière intervention - 3 sept. 2012 à 11:30
0
Utile
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?
Commenter la réponse de cs_loulou69
0
Utile
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
Commenter la réponse de Dant96
0
Utile
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
Commenter la réponse de Dant96
0
Utile
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'"
Commenter la réponse de Dant96
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 3 sept. 2012 à 14:23
0
Utile
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.
Commenter la réponse de cs_Jack
cs_loulou69 672 Messages postés mercredi 22 janvier 2003Date d'inscription 2 juin 2016 Dernière intervention - 3 sept. 2012 à 14:29
0
Utile
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")
Commenter la réponse de cs_loulou69
0
Utile
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
Commenter la réponse de Dant96
0
Utile
Merci beaucoup pour votre aide ca marche super
Commenter la réponse de Dant96
0
Utile
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
Commenter la réponse de Dant96

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.