bonjour,
voici en gros le principe :
Dans votre logiciel, il y a un bouton demande d'activation. Ce bouton génère un fichier ou une chaîne cryptée que votre client doit vous transmettre ( courrier électronique ). Dans ce fichier il y a des informations concernant le BIOS, la carte mère, la carte réseau, le disque dur ( pas des informations confidentielles, seulement des numéros de série ou info HARD). En recueillant ces informations vous jugez quelles sont ou quelle est l'information la plus fiable. Vous générez une clé d'activation cryptée en fonction de ces informations. Vous la transmettez à votre client. La partie activation de votre logiciel (lancé à chaque démarrage) vient alors décoder cette clé et vient vérifier que les infos Hard correspondent au matériel sur lequel est lancé le logiciel.
Pour vous aidez dans cette tâche, je vous propose la partie récolte d'informations. Voici une procédure qui utilise WMI avec assemblage DotNet, récupérant des infos pour générer ou contrôler un numéro de licence.
Pour utiliser cela dans votre projet il vous faut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68 // Résumé : Récupérer des informations système pour générer ou contrôler un numéro de licence // Cette procédure utilise la collection pWMI et à incorporer dans celle-ci // Syntaxe : //RécupèreInfosLicence () // // Paramètres : // Aucun // Valeur de retour : // Aucune // // // Pensé par Jurassic.Pork Juin 2010 // PROCEDURE RécupèreInfosLicence() InfoLicence est une structure NumSérieDisque est une chaîne NumVolDisque est une chaîne NumMacAdresse est une chaîne NumSérieCarteMère est une chaîne NumSérieBios est une chaîne FIN sUneInformation est une chaîne MonInfoLicence est une InfoLicence // Récupération du numéro de série du 1er disque sUneInformation = RécupèreContenu("Win32_PhysicalMedia",gsServeur + "root\CIMV2", "Tag LIKE '%PHYSICALDRIVE0'") SI sUneInformation <> "" ALORS MonInfoLicence.NumSérieDisque = TrouveInformation(sUneInformation,"SerialNumber") SINON MonInfoLicence.NumSérieDisque = "INVALIDE" FIN // Récupération du numéro de volume du disque C: sUneInformation = RécupèreContenu("Win32_LogicalDisk",gsServeur + "root\CIMV2", "DeviceID='C:'") SI sUneInformation <> "" ALORS MonInfoLicence.NumVolDisque = TrouveInformation(sUneInformation,"VolumeSerialNumber") SINON MonInfoLicence.NumSérieDisque = "INVALIDE" FIN // Récupération de l'adresse MAC du premier adaptateur réseau valide sUneInformation = RécupèreContenu("Win32_NetworkAdapter",gsServeur + "root\CIMV2", "PhysicalAdapter=True") SI sUneInformation <> "" ALORS MonInfoLicence.NumMacAdresse = TrouveInformation(sUneInformation,"MACAddress") SINON MonInfoLicence.NumMacAdresse = "INVALIDE" FIN // Récupération du numéro de série de carte mère sUneInformation = RécupèreContenu("Win32_BaseBoard",gsServeur + "root\CIMV2") SI sUneInformation <> "" ALORS MonInfoLicence.NumSérieCarteMère = TrouveInformation(sUneInformation,"SerialNumber") SINON MonInfoLicence.NumSérieCarteMère = "INVALIDE" FIN // Récupération du numéro de série du BIOS sUneInformation = RécupèreContenu("Win32_BIOS",gsServeur + "root\CIMV2") SI sUneInformation <> "" ALORS MonInfoLicence.NumSérieBios = TrouveInformation(sUneInformation,"SerialNumber") SINON MonInfoLicence.NumSérieBios = "INVALIDE" FIN // A vous de jouer pour générer ou vérifier la clé de licence avec les infos les plus justes.
1 - Utiliser l'assemblage .NET "System.Management" :
Menu Atelier/.NET/Utiliser Un Assemblage .NET dans ce projet
Dans la fenêtre qui s'ouvre cliquer sur "Lister les assemblages référencés"
Quand la recherche est terminée cocher "Mscorlib" et "System.Management"
2 - Récupérer la collection de procédure pWMI.wdg qui se trouve dans l'exemple complet WD WMI DOTNET et l'inclure dans votre projet
3 - Rajouter la procédure RécupèreInfosLicence dans votre collection pWMI.wdg
Contrainte : comme vous utilisez un assemblage .Net, il faut que le Framework dotnet soit installé sur la station qui utilisera cette procédure.
Ami calmant, J.P ;-)
Partager