Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Sécurité
Sécurité Le forum qui s'occupe de votre préoccupation de sécuriser l'accès à votre application Access, ainsi qu'à la sécurité des données.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/08/2007, 10h11   #1
Nouveau Membre du Club
 
Avatar de Oceliane
 
Étudiant
Inscription : mars 2007
Messages : 66
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mars 2007
Messages : 66
Points : 27
Points : 27
Par défaut [VBA] Compatibilité avec Regwrite (base de registre) entre XP et Vista

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 :
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.
Oceliane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h40.


 
 
 
 
Partenaires

Hébergement Web