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:

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
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!

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.