Executer du code uniquement lors de la 1ere éxecution de l'application

cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 7 févr. 2011 à 11:01
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 - 9 févr. 2011 à 06:30
Bonjour,
je cherche comment faire pour exécuter du code uniquement pour la 1ere fois que l'application démarre.
j'ai pensé utiliser un fichier *.ini mais cette solution n'est pas fiable.
Puis, je voulais utiliser le MY.settings de vb mais là encore, j'ai lu que cette solution s'avère complexe et engendrait beaucoup de problème.
Du coup, je pense utilisé le registre windows. mais cette solution est -elle fiable et sans soucis ? De plus, si quelqu'un pouvait me faire une démonstration de son utilisation se serait sympa.

en faite, je souhaite afficher une fenêtre "activation du logiciel" lors du 1er démarrage de l'application ou tant que l'application ne soit pas activé. c'est pour cela que le fichier ini n'est pas adapté car très facilement modifiable. Je reste réticent quant à l'utilisation du setting de vb10.

Je voudrais avoir vos avis merci.

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 févr. 2011 à 14:48
Salut

Mon point de vue :
Le fichier INI est une bonne solution et facile à manipuler.
Si tu ajoutes un item dans ce fichier INI une fois le logiciel enregistré, difficile à l'utilisateur d'imaginer quelle serait le nom de l'item et encore moins son contenu.
Donc, à part si quelqu'un a déjà installé le logiciel et ait fait cette recherche pour tricher, je trouve cette solution viable.
D'autant que tu peux, par exemple, stocker dans cet item un code bien maquillé que ton logiciel saurait reconnaître, basé par exemple sur le no de série d'un matériel : disque dur (mais pas partition), adresse MAC d'une carte réseau, nom de l'utilisateur (login), etc ...

Autre solution simpliste : Avec ton package d'application, tu ajoutes un fichier texte contenant n'importe quoi et dont le nom ressemblerait à un fichier "applicatif" (genre UnInstall.txt) : Une fois enregistré, tu supprimes le fichier :
Fichier présent : pas enregistré
Fichier absent : enregistré

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
7 févr. 2011 à 17:03
Quand tu parles d'item dans les fichiers ini tu fais référence à une section ou à une clé ?
car actuellement dans mon fichier ini j'ai une clé "No_serie" qui contient la clé d'activation. Ainsi, une fenêtre "a propos de" indique à l'utilisateur le n° de série associé à son logiciel. Cependant, ce que je crains c'est que le fichier ini est totalement altérable.
Que penses-tu de l'utilisation du registre ?
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 févr. 2011 à 20:41
Oui Clé, les sections ne servent qu'à organiser les clés et d'étendue des fonctions de listage des clés ou autres commandes génériques liées aux sections.

Altérable, certes. C'est un fichier texte.
Mais si qqun touche au contenu, tant pis pour lui.

Base de registres : moi, j'aime pas. Y a déjà assez de bazar la dedans, mais pourquoi pas.
Il doit bien y avoir des exemples sur le site.
0
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
8 févr. 2011 à 05:53
Pour le fichier ini, il y a t-il un moyen de le mettre en lecture seule (interdire l'écriture dans le fichier) et de permettre l'écriture uniquement par le biais du programme ?
Merci pour ton intêret, je pense donc créer une clé pour savoir si le logiciel démarre pour la 1ere fois ou non.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danHF Messages postés 1 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 8 février 2011
8 févr. 2011 à 21:19
Bonsoir,
J'ai écrit un petit programme dernièrement ou j'avais sensiblement le même problème.
Pour le résoudre, je suis passé par un fichier ini crypter que je décrypte juste pour la lecture de mes variables et que je re-crypte aussitôt.
Le fichier est effectivement modifiable manuellement mais comme le texte lisible du fichier est du genre :
"=ü"ò«´ðÛ‹¤Wcк¶íSeá·‘ýIÆƈȒ,2%FÐ0p ]U»ndª<®>ý”›Ü9Uòù^ŸÌßwäP™äùÀÞHê8ý¼ËfL†N~Õ©F __ÍJ<H°­5qûbøóeُ¶;ä:ÌÊ\oÜ×›4òíWÅ¢ˆw‰{c’廃cƒþÁlƒ§”ÇÄ®4I"6‡îoïÿ4(|*e2YêdœÅmCš{bï‘—il¿.Ê·J—œôðe,ºwV<)"
Je doute qu'un utilisateur lambda puisse modifier la clé qui m'intéresse dans mon programme.
J'ai par ailleurs ajouté un contrôle sur cette clé et, en cas d'erreur lors de la comparaison, j'envoi un message du style "Le fichier backup.ini à été modifié manuellement, contactez l'administrateur." avant de fermer le programme automatiquement.
Pour éviter la modification "maladroite" du fichier ini, je le mets aussi en lecture seule mais cela vaut ce que ça vaut, c'est à dire pas grand chose car je ne change que l'attribut lecture seule des propriétés du fichier :

If File.Exists("\Backup.ini") Then
Try
File.SetAttributes("\Backup.ini", FileAttributes.Normal)
.....
File.SetAttributes("\Backup.ini", FileAttributes.ReadOnly)
Catch ex As Exception
End Try
End If

Voilà, mais attention je suis vraiment débutant dans la programmation.

Bonne programmation.
0
cs_lilj Messages postés 203 Date d'inscription dimanche 13 décembre 2009 Statut Membre Dernière intervention 1 avril 2012 5
9 févr. 2011 à 06:30
J'avais aussi pensé à cela, mais cette propriété peut être changer très facilement.
0
Rejoignez-nous