En suivant le FAQ:
http://access.developpez.com/faq/?pa...AccessRegistre
Je suis un informaticien sadique travaillant pour un patron paranoïaque.
Je dispose d'une base de données que je sécurise de la manière suivante: Si la licence de la base de données expire pour une quelconque raison (date limite d'utilisation dépassée, trop grand nombre d'utilisations...), la base de données se bloque, en mettant une variable licence expirée dans la BD, et je modifie aussi une donnée "licence" dans la base de registre windows.
Pour cela, j'utilise regread et regwrite.
Le principe est simple:
- Je vérifie si l'identifiant du PC dans le registre correspond à celui dans la base de données (empécher d'utiliser la base sous un autre poste)
- Je vérifie si la licence inscrite dans la base de registre est valide (empêche de se servir d'une copie de la base de données bloquée)
J'ai conçu et testé cette application sous XP. mon patron, lui, dispose de Vista. Sous XP, tout va bien tandis que sous Vista l'application plant. en effet, c'est comme si il lit la commande, l'ignore, puis ignore l'instruction suivante. C'est assez dommage, j'ai déja bloqué définitivement 2 ou 3 versions de test On dirait que Vista empèche d'écrire dans la base de registre
Bien entendu, voici un peu de code pour vous montrer mon désarroi:
Dans cet exemple, il n'exécute pas le DoCmd.Quit, ce qui permet à l'utilisateur de travailler sur ma base même si la licence est périmée!
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 Dim Ma_Clef As String 'Chemin de ma clef dans le registre Dim WshShell As Object Ma_Clef = "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId" Set WshShell = CreateObject("WScript.Shell") If Me.Datemax < Now() or WshShell.RegRead(Ma_Clef) <> Me.PCID Then Me.Statut = 1 MsgBox "La date d'expiration de l'application est dépassée", vbExclamation Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKLM\SOFTWARE\bdc2007 v2\licence", "nothing", "REG_SZ" Set WshShell = Nothing DoCmd.Quit End If
Par ailleurs, Saint Gates a décidé de modifier l'emplacement du numéro d'identification du PC sous vista. il ne se trouve plus dans HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProductId, mais ailleurs. j'ai donc dû me baser sur le n° de produit, qui, j'espère, varie bien d'un poste à un autre (HKEY_LOCAL_MACHINE\SYSTEM\Setup\PID\PID).
Référence de l'appli utilisée: BD access 2007, convertie au format 2003, et sous environnement 2007.
Partager