[..] Executer un script une seule fois

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

[..] Executer un script une seule fois

#1

Message par jcaspar »

B :mrgreen: onne année à tous !

Pour bien commencer l'année une nouvelle question !

Puis je faire en sorte qu'un script ne s'excute qu'une seule

fois ? :roll:

Je ne vois pas trop comment faire la fonction _singleton ne lance qu'une
seule instance ...mais bon ce n'est pas tout à fait ce que je cherche...

Merci d'avance pour vos suggestions et conseils

Jean Marc
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Executer un script une seule fois

#2

Message par zeshrek »

Par une seule fois tu veux dire :
1/ A un instant T il n'y a qu'une seule occurence du script qui s'éxécute
2/ Dans une session (entre 2 login de l'utilisateur) le script ne s'exécute qu'une seule fois
3/ Le script ne peut etre lancé qu'une seule fois par chaque utilisateur de la machine
4/ Le script ne peut etre éxécuté qu'une seule fois sur l'ordinateur, quel que soit l'utilisateur qui éssaye de le lancer la seconde fois

Hé oui, il peut y avoir plein de 'une seule fois'


En clair, plutot que nous parler de ce qui ne correspond pas a ce que tu veux faire (_singleton), dis nous ce que tu veux faire pour qu'on essaye de te troucer une solution
Si vis pacem para bellum
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

Re: [..] Executer un script une seule fois

#3

Message par jcaspar »

Effectivement je souhaiterais que mon script ne s'excute qu'une seule fois
sur une même machine.

Le script ne peut etre éxécuté qu'une seule fois sur l'ordinateur, quel que soit l'utilisateur qui éssaye de le lancer la seconde fois

J'ignore comment coder cela ?
:roll:

Je Suis curieux de savoir comment procéder ! :idea:

Merci beaucoup de votre réponse et de vos suggestions! :mrgreen:
Avatar du membre
cramaboule
Niveau 2
Niveau 2
Messages : 25
Enregistré le : dim. 19 août 2007 15:54
Status : Hors ligne

Re: [..] Executer un script une seule fois

#4

Message par cramaboule »

jcaspar a écrit :Effectivement je souhaiterais que mon script ne s'excute qu'une seule fois
sur une même machine.

Le script ne peut etre éxécuté qu'une seule fois sur l'ordinateur, quel que soit l'utilisateur qui éssaye de le lancer la seconde fois
Tu peux essayer avec un fichier .ini où tu inscris un 'on' 'off'.
J'utilise ce système pour exécuter l'un de mes script qu'une fois par jour. J'inscris la date dans un fichier .ini et à chaque lancement je vais vérifier ce fichier .ini.

Edition: corrections
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Executer un script une seule fois

#5

Message par moutelous »

Bonjour,

Une petite info en base de registre et voilà .....
A+
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Executer un script une seule fois

#6

Message par zeshrek »

Si le but est de ne le lancer qu'une fois quel que soit les autres utilisateurs qui éssayent, je suppose que le plus simple consisterait a coller une clé de registre dans dans HKLM\softwares (ou si le but est de la cacher y a surement moyen de créer un GUID dans HKLM\system\controlset01\class en prenant exemple sur des class qui existent déjà) lors de la première execution, et d'en tester la présence.
Si la clé est là, c'est que l'appli a déjà tourné donc fin. Sinon, il s'execute, puis crée la clé, et quitte
A la limite tu peux lui en faire créer plusieurs



Edit : argll !!! grilled par moutelous pendant que je postais ma réponse...
Si vis pacem para bellum
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 411
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: [..] Executer un script une seule fois

#7

Message par jl56 »

Bonjour

J'avais résolu ce problème en testant simplement la présence d'un fichier

Code : Tout sélectionner

if FileExists("deja lancé.txt") Then
MsgBox(0,"attention","ce script à déja été éxécuté")
    Exit
EndIf

$file = FileOpen("deja lancé.txt", 2)
MsgBox(0,"ok","execution du script pour la premiere fois")
A+ JL56
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Executer un script une seule fois

#8

Message par zeshrek »

l'inconvénient du fichier c'est qu'il risque plus facilemnt d'etre supprimé par un utilisateur qui voudra quand même lancer le script.
Sinon, y a aussi une solution, c'est que le script s'auto suprime apres avoir tourné. Si il est plus là, forcément personne ne le lancera ;)
voir du coté de selfdelete...
Si vis pacem para bellum
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Executer un script une seule fois

#9

Message par Tlem »

Ouais, mais on ce fait avoir qu'une fois. Après on fait une copie avant de le lancer. :roll:

Dans les meilleures solutions, je conseil une clé dans la base de registre.
Genre dans HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class, ou dans win.ini, une nouvelle valeur anodine.

Sinon, le top (mais il faut impérativement que le soft se connecte sur un serveur) un échange de clé générée par un algorithme maison. ;)
Pas de connexion => pas de lancement.

Après, il est possible de faire un mixe de ces solutions + divers autres, mais tout dépend de l'importance de votre script. :roll:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Executer un script une seule fois

#10

Message par jchd »

Tour dépend aussi de la sémantique que le posteur cache sous le terme "une seule fois" :

Par utilisateur
Par PC (qu'est-ce qu'un PC ?)
Par système/OS installé (un dual boot XP et 7 sont-ils le même système ?)
Quid de la virtualisation ?
etc.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] Executer un script une seule fois

#11

Message par zeshrek »

La question a déjà été posée (regarde le 2eme post du topic) a a obtenu une réponse mais c'est vrai que les solutions proposées ont toutes leurs faiblesse.
Le fichier marqueur marche dans le cas de multiboot, mais peut etre supprimé si l'utilisateur veut relancer le script malgré tout.
La clé de registre est spécifique a un OS.
L'interrogation d'un serveur implique la mise en place d'un serveur, et un échange de données a l'insu de l'utilisateur.
.. etc etc.
C'est le problème quand les gens posent une question sans avoir réfléchi a tous les aspects du problème...
Si vis pacem para bellum
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Executer un script une seule fois

#12

Message par jchd »

J'avais bien vu, géant vert, mais la réponse apportée n'éclaircit pas grand chose. Qu'est-ce qu'une "machine" ?
Ceci rejoint d'autres posts antérieurs ici ou sur le forum US ou sur des forums d'autres langages/OS, sans recevoir jamais de réponse définitive.
Le problème étant mal posé à la base, les suggestions ne peuvent qu'être bancales d'un côté ou d'un autre.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre