OVH Cloud OVH Cloud

Répertoire d'installation / Chemin d'accès...

1 réponse
Avatar
René Descartes
Bonjour,

J'ai demandé il y a quelque temps sur ce forum une façon de faire afin
d'empêcher l'application de fonctionner si elle était installer ailleurs que
dans un répertoire X.

Voici ce que j'ai reçu comme réponse :


Dans un module:
Public Sub Protection(frm as Form)
Dim NomBase as String, DLC as boolean
DLC = True
NomBase = CurrentDB.Name
If NomBase <> "C:\TrucMachin\MaBase.mdb" Then DLC = False
End Sub

Puis dans la procédure associée à l'évènement 'sur ouverture' du formulaire
de démarrage:
Protection Me
If DLC = False Then
msgbox "insulte de ton choix"
DoCmd.Quit
End If

Or cette procédure ne fonctionne pas pour plusieurs raisons, dont entre
autres la variable DLC qui n'est pas déclaré dans le formulaire de
démarrage.

Peu importe, j'ai modifié le code ci-dessus pour donner celui ci-dessous :


Private Sub Form_Open(Cancel As Integer)
Dim NomBase As String
Dim DLC As Boolean
DLC = True
NomBase = CurrentDb.Name
If NomBase <> "C:\test\test.mdb" Then DLC = False
If DLC = False Then
MsgBox "insulte de ton choix"
DoCmd.Quit
End If
End Sub

Or, à la lumière de ce qui précède, le code que j'aie modifié fonctionne
très bien sauf que le module est rendu inutile puisque la totalité du code
est placé sur l'évènement ouverture du formulaire de démarrage.

Mes questions :

En cachant les éléments de la base de données et en désactivant la touche
SHIFT au démarrage, est-ce que cela est suffisant pour forcer l'utilisateur
à installer l'application dans un répertoire X prédéterminé ?

Pourquoi est-ce que le module n'est plus nécessaire ?

Quel était l'erreur dans le code en haut de ce message ?

Est-ce qu'il y a une solution de rechange ou une meilleure solution, voire
où le code serait plutôt dans le module ?



Un GROS merci à l'avance pour vos réponses !

Stéfanie.

1 réponse

Avatar
René Descartes
Merci !

"Logipro" a écrit dans le message de news:
YV2Ua.10975$
Bonjour Stéfanie,

Pour une protection optimale je te suggère de convertir ton appli en .mde
ensuite comme tu dit de la verrouillée avec le "Shift" et d'utiliser ta
fonction pas seulement au démarrage mais à l'ouverture de quelque
formulaire

principale de ton appli. donc
ton DLC pourrait soit devenir global ou bien utiliser une fonction comme
ceci :

Dans un module :
Public Function DroitAcces() as boolean
Dim NomBase as String
NomBase = CurrentDB.Name
If NomBase <> "C:TrucMachinMaBase.mdb" Then
Protection = False
else
Protection = True
endif
End Sub

Sur ouverture de quelques formulaires :
Private Sub Form_Open(Cancel As Integer)
if DroitAccesúlse then docmd.quit
End sub

P.S Le "Hard codage" n'est pas une technique très élégante dans une
application, l'idéale est plutôt d'encrypter
le chemin dans la base de registre, de cette façon ça évite de
modifier ton application, une sollution aussi est de donner à
l'usager une clé d'activation pour chaque installation, un exemple sur mon
site :
http://www.logicielappui.com/tips/Acc97_Shareware.zip


Salutation et bonne continuation !

Robert Simard
Logipro


"René Descartes" a écrit dans le message de
news:EJ0Ua.9703$
Bonjour,

J'ai demandé il y a quelque temps sur ce forum une façon de faire afin
d'empêcher l'application de fonctionner si elle était installer ailleurs
que

dans un répertoire X.

Voici ce que j'ai reçu comme réponse :


Dans un module:
Public Sub Protection(frm as Form)
Dim NomBase as String, DLC as boolean
DLC = True
NomBase = CurrentDB.Name
If NomBase <> "C:TrucMachinMaBase.mdb" Then DLC = False
End Sub

Puis dans la procédure associée à l'évènement 'sur ouverture' du
formulaire

de démarrage:
Protection Me
If DLC = False Then
msgbox "insulte de ton choix"
DoCmd.Quit
End If

Or cette procédure ne fonctionne pas pour plusieurs raisons, dont entre
autres la variable DLC qui n'est pas déclaré dans le formulaire de
démarrage.

Peu importe, j'ai modifié le code ci-dessus pour donner celui ci-dessous
:




Private Sub Form_Open(Cancel As Integer)
Dim NomBase As String
Dim DLC As Boolean
DLC = True
NomBase = CurrentDb.Name
If NomBase <> "C:testtest.mdb" Then DLC = False
If DLC = False Then
MsgBox "insulte de ton choix"
DoCmd.Quit
End If
End Sub

Or, à la lumière de ce qui précède, le code que j'aie modifié fonctionne
très bien sauf que le module est rendu inutile puisque la totalité du
code


est placé sur l'évènement ouverture du formulaire de démarrage.

Mes questions :

En cachant les éléments de la base de données et en désactivant la
touche


SHIFT au démarrage, est-ce que cela est suffisant pour forcer
l'utilisateur

à installer l'application dans un répertoire X prédéterminé ?

Pourquoi est-ce que le module n'est plus nécessaire ?

Quel était l'erreur dans le code en haut de ce message ?

Est-ce qu'il y a une solution de rechange ou une meilleure solution,
voire


où le code serait plutôt dans le module ?



Un GROS merci à l'avance pour vos réponses !

Stéfanie.