Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une
seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au début
cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son dernier
l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message
indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un
autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre,
lorsqu'il tente de se modifier tout seul en mettant son dernier octet à 1,
j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ? c'est
une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier
octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre le
1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a déja
été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui puisse
s'auto-modifier.
Très mauvaise idée : la modification d'un fichier exécutable sans l'intervention du programmeur est traditionnellement la manifestation d'un virus. Donc, autant éviter les fausses alertes.
En revanche, pourquoi pas un fichier de paramètres, ou une clef de registre ? Plutôt une clef de registre, d'ailleurs, l'utilisateur n'ira pas mettre ses gros doigts dessus.
On l'incrémente à chaque fois qu'on entre dans le programme, et on la décrémente à chaque fois qu'on en sort, ça permet de savoir combien d'occurrences du programme sont en cours. Si c'est limité à 1, la clef vaudra 0 ou 1. ___________________________________ Fuxy a écrit, le 09/02/2005 08:43 :
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au début cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son dernier l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre, lorsqu'il tente de se modifier tout seul en mettant son dernier octet à 1, j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ? c'est une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre le 1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a déja été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui puisse s'auto-modifier.
Merci
Bonjour,
Très mauvaise idée : la modification d'un fichier exécutable sans
l'intervention du programmeur est traditionnellement la manifestation
d'un virus. Donc, autant éviter les fausses alertes.
En revanche, pourquoi pas un fichier de paramètres, ou une clef de
registre ? Plutôt une clef de registre, d'ailleurs, l'utilisateur n'ira
pas mettre ses gros doigts dessus.
On l'incrémente à chaque fois qu'on entre dans le programme, et on la
décrémente à chaque fois qu'on en sort, ça permet de savoir combien
d'occurrences du programme sont en cours. Si c'est limité à 1, la clef
vaudra 0 ou 1.
___________________________________
Fuxy a écrit, le 09/02/2005 08:43 :
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une
seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au début
cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son dernier
l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message
indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un
autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre,
lorsqu'il tente de se modifier tout seul en mettant son dernier octet à 1,
j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ? c'est
une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier
octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre le
1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a déja
été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui puisse
s'auto-modifier.
Très mauvaise idée : la modification d'un fichier exécutable sans l'intervention du programmeur est traditionnellement la manifestation d'un virus. Donc, autant éviter les fausses alertes.
En revanche, pourquoi pas un fichier de paramètres, ou une clef de registre ? Plutôt une clef de registre, d'ailleurs, l'utilisateur n'ira pas mettre ses gros doigts dessus.
On l'incrémente à chaque fois qu'on entre dans le programme, et on la décrémente à chaque fois qu'on en sort, ça permet de savoir combien d'occurrences du programme sont en cours. Si c'est limité à 1, la clef vaudra 0 ou 1. ___________________________________ Fuxy a écrit, le 09/02/2005 08:43 :
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au début cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son dernier l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre, lorsqu'il tente de se modifier tout seul en mettant son dernier octet à 1, j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ? c'est une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre le 1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a déja été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui puisse s'auto-modifier.
Merci
Kiriasse
Ne suffit-il de prévoir cette simple ligne de code au démarrage ? If App.PrevInstance Then End Kiriasse www.kiriasse.fr
== "Gloops" a écrit dans le message de news: 4209cc13$0$28548$
Bonjour,
Très mauvaise idée : la modification d'un fichier exécutable sans l'intervention du programmeur est traditionnellement la manifestation d'un virus. Donc, autant éviter les fausses alertes.
En revanche, pourquoi pas un fichier de paramètres, ou une clef de registre ? Plutôt une clef de registre, d'ailleurs, l'utilisateur n'ira pas mettre ses gros doigts dessus.
On l'incrémente à chaque fois qu'on entre dans le programme, et on la décrémente à chaque fois qu'on en sort, ça permet de savoir combien d'occurrences du programme sont en cours. Si c'est limité à 1, la clef vaudra 0 ou 1. ___________________________________ Fuxy a écrit, le 09/02/2005 08:43 :
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au début cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son dernier l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre, lorsqu'il tente de se modifier tout seul en mettant son dernier octet à 1, j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ? c'est une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre le 1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a déja été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui puisse s'auto-modifier.
Merci
Ne suffit-il de prévoir cette simple ligne de code au démarrage ?
If App.PrevInstance Then End
Kiriasse
www.kiriasse.fr
== "Gloops" <gloops@niark.fr> a écrit dans le message de news:
4209cc13$0$28548$8fcfb975@news.wanadoo.fr...
Bonjour,
Très mauvaise idée : la modification d'un fichier exécutable sans
l'intervention du programmeur est traditionnellement la manifestation d'un
virus. Donc, autant éviter les fausses alertes.
En revanche, pourquoi pas un fichier de paramètres, ou une clef de
registre ? Plutôt une clef de registre, d'ailleurs, l'utilisateur n'ira
pas mettre ses gros doigts dessus.
On l'incrémente à chaque fois qu'on entre dans le programme, et on la
décrémente à chaque fois qu'on en sort, ça permet de savoir combien
d'occurrences du programme sont en cours. Si c'est limité à 1, la clef
vaudra 0 ou 1.
___________________________________
Fuxy a écrit, le 09/02/2005 08:43 :
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une
seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au
début
cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son
dernier
l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message
indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un
autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre,
lorsqu'il tente de se modifier tout seul en mettant son dernier octet à
1,
j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ?
c'est
une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier
octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre
le
1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a
déja
été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui
puisse
s'auto-modifier.
Ne suffit-il de prévoir cette simple ligne de code au démarrage ? If App.PrevInstance Then End Kiriasse www.kiriasse.fr
== "Gloops" a écrit dans le message de news: 4209cc13$0$28548$
Bonjour,
Très mauvaise idée : la modification d'un fichier exécutable sans l'intervention du programmeur est traditionnellement la manifestation d'un virus. Donc, autant éviter les fausses alertes.
En revanche, pourquoi pas un fichier de paramètres, ou une clef de registre ? Plutôt une clef de registre, d'ailleurs, l'utilisateur n'ira pas mettre ses gros doigts dessus.
On l'incrémente à chaque fois qu'on entre dans le programme, et on la décrémente à chaque fois qu'on en sort, ça permet de savoir combien d'occurrences du programme sont en cours. Si c'est limité à 1, la clef vaudra 0 ou 1. ___________________________________ Fuxy a écrit, le 09/02/2005 08:43 :
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au début cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son dernier l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre, lorsqu'il tente de se modifier tout seul en mettant son dernier octet à 1, j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ? c'est une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre le 1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a déja été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui puisse s'auto-modifier.
Merci
Gloops
Ah, bien entendu, si c'était déjà prévu ...
Pour quand tout le monde sera passé à .Net, je vais bien finir par maîtriser VB6 _______________________________________ Kiriasse a écrit, le 09/02/2005 09:52 :
Ne suffit-il de prévoir cette simple ligne de code au démarrage ? If App.PrevInstance Then End Kiriasse www.kiriasse.fr
Ah, bien entendu, si c'était déjà prévu ...
Pour quand tout le monde sera passé à .Net, je vais bien finir par
maîtriser VB6
_______________________________________
Kiriasse a écrit, le 09/02/2005 09:52 :
Ne suffit-il de prévoir cette simple ligne de code au démarrage ?
If App.PrevInstance Then End
Kiriasse
www.kiriasse.fr
Pour quand tout le monde sera passé à .Net, je vais bien finir par maîtriser VB6 _______________________________________ Kiriasse a écrit, le 09/02/2005 09:52 :
Ne suffit-il de prévoir cette simple ligne de code au démarrage ? If App.PrevInstance Then End Kiriasse www.kiriasse.fr
Nicolas
Petite question :
Votre méthode peut sûrement être utile mais si vous modifié à 1 la clef et que le pc plante pendant l'exécution du programme (coupure de courant par exemple). Le logiciel ne redémarrera jamais car ça sera toujours à 1.
Tandis que la méthode avec le App a l'avantage de ne pas créer ce résultat.
Faut prévoir aussi les plantages en dev ;-) .
Amicalement
Nicolas.
Gloops a écrit :
Ah, bien entendu, si c'était déjà prévu ...
Pour quand tout le monde sera passé à .Net, je vais bien finir par maîtriser VB6 _______________________________________ Kiriasse a écrit, le 09/02/2005 09:52 :
Ne suffit-il de prévoir cette simple ligne de code au démarrage ? If App.PrevInstance Then End Kiriasse www.kiriasse.fr
Petite question :
Votre méthode peut sûrement être utile mais si vous modifié à 1 la clef
et que le pc plante pendant l'exécution du programme (coupure de courant
par exemple). Le logiciel ne redémarrera jamais car ça sera toujours à 1.
Tandis que la méthode avec le App a l'avantage de ne pas créer ce résultat.
Faut prévoir aussi les plantages en dev ;-) .
Amicalement
Nicolas.
Gloops a écrit :
Ah, bien entendu, si c'était déjà prévu ...
Pour quand tout le monde sera passé à .Net, je vais bien finir par
maîtriser VB6
_______________________________________
Kiriasse a écrit, le 09/02/2005 09:52 :
Ne suffit-il de prévoir cette simple ligne de code au démarrage ?
If App.PrevInstance Then End
Kiriasse
www.kiriasse.fr
Votre méthode peut sûrement être utile mais si vous modifié à 1 la clef et que le pc plante pendant l'exécution du programme (coupure de courant par exemple). Le logiciel ne redémarrera jamais car ça sera toujours à 1.
Tandis que la méthode avec le App a l'avantage de ne pas créer ce résultat.
Faut prévoir aussi les plantages en dev ;-) .
Amicalement
Nicolas.
Gloops a écrit :
Ah, bien entendu, si c'était déjà prévu ...
Pour quand tout le monde sera passé à .Net, je vais bien finir par maîtriser VB6 _______________________________________ Kiriasse a écrit, le 09/02/2005 09:52 :
Ne suffit-il de prévoir cette simple ligne de code au démarrage ? If App.PrevInstance Then End Kiriasse www.kiriasse.fr
Fuxy
Merci de vos réponses, mais je ne pense pas que ça corresponde à ce que je veux faire.
En fait voilà le projet :
Je veux faire un petit jeu avec des copains, on s'envoie des messages, mais qu'on ne peut lire qu'une seule fois. voilà a ce que j'avais pensé.
- Créer un petit fichier .EXE avec juste un Text1.text
- Lors de l'éxécution du fichier EXE :
- Il vérifie si son dernier octet est à Zéro, si oui alors il affiche un texte pendant 5 secondes (Timer) il met le dernier octet à 1 (mon problème de modification de fichier déja ouvert) il se referme (End) - Sinon, il affiche un message indiquant que le texte à déja été lu
Merci de vos réponses, mais je ne pense pas que ça corresponde à ce que je
veux faire.
En fait voilà le projet :
Je veux faire un petit jeu avec des copains, on s'envoie des messages, mais
qu'on ne peut lire qu'une seule fois. voilà a ce que j'avais pensé.
- Créer un petit fichier .EXE avec juste un Text1.text
- Lors de l'éxécution du fichier EXE :
- Il vérifie si son dernier octet est à Zéro, si oui alors
il affiche un texte pendant 5 secondes (Timer)
il met le dernier octet à 1 (mon problème de
modification de fichier déja ouvert)
il se referme (End)
- Sinon, il affiche un message indiquant que le texte à déja été lu
Merci de vos réponses, mais je ne pense pas que ça corresponde à ce que je veux faire.
En fait voilà le projet :
Je veux faire un petit jeu avec des copains, on s'envoie des messages, mais qu'on ne peut lire qu'une seule fois. voilà a ce que j'avais pensé.
- Créer un petit fichier .EXE avec juste un Text1.text
- Lors de l'éxécution du fichier EXE :
- Il vérifie si son dernier octet est à Zéro, si oui alors il affiche un texte pendant 5 secondes (Timer) il met le dernier octet à 1 (mon problème de modification de fichier déja ouvert) il se referme (End) - Sinon, il affiche un message indiquant que le texte à déja été lu
ng
Salut,
En effet un prog comme celui ci ne fonctionne pas :
Option Explicit
Dim strAppChe As String
Private Sub Form_Load() If Right$(App.Path, 1) <> "" Then strAppChe = App.Path & "" Else strAppChe = App.Path
Dim k As Integer Dim bByte As Byte
k = FreeFile Open strAppChe & App.EXEName & ".exe" For Binary As #k Get #k, LOF(k), bByte If bByte = 0 Then Put #k, LOF(k), 1 ElseIf bByte = 1 Then Call MsgBox("Erreur !") Else Put #k, LOF(k) + 1, 1 End If Close #k End Sub
Le problème c'est que je ne vois pas d'alternative évidente (sauf trimballer un fichier avec l'exe) car tout ce qui est BDR & Co ca dépend de la machine, si on copie l'exe sur une autre machine il fonctionnera qd mm...
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Fuxy wrote:
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au début cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son dernier l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre, lorsqu'il tente de se modifier tout seul en mettant son dernier octet à 1, j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ? c'est une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre le 1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a déja été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui puisse s'auto-modifier.
Merci
Salut,
En effet un prog comme celui ci ne fonctionne pas :
Option Explicit
Dim strAppChe As String
Private Sub Form_Load()
If Right$(App.Path, 1) <> "" Then strAppChe = App.Path & "" Else
strAppChe = App.Path
Dim k As Integer
Dim bByte As Byte
k = FreeFile
Open strAppChe & App.EXEName & ".exe" For Binary As #k
Get #k, LOF(k), bByte
If bByte = 0 Then
Put #k, LOF(k), 1
ElseIf bByte = 1 Then
Call MsgBox("Erreur !")
Else
Put #k, LOF(k) + 1, 1
End If
Close #k
End Sub
Le problème c'est que je ne vois pas d'alternative évidente (sauf trimballer
un fichier avec l'exe) car tout ce qui est BDR & Co ca dépend de la machine,
si on copie l'exe sur une autre machine il fonctionnera qd mm...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Fuxy wrote:
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer
qu'une seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au
début cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son
dernier l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message
indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro
avec un autre petit logiciel(B), je l'ai lancé et il fonctionne, par
contre, lorsqu'il tente de se modifier tout seul en mettant son
dernier octet à 1, j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ?
c'est une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le
dernier octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car
si je démarre le 1er logiciel(A) avec l'octet à 1, j'ai bien un
message comme quoi il a déja été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui
puisse s'auto-modifier.
En effet un prog comme celui ci ne fonctionne pas :
Option Explicit
Dim strAppChe As String
Private Sub Form_Load() If Right$(App.Path, 1) <> "" Then strAppChe = App.Path & "" Else strAppChe = App.Path
Dim k As Integer Dim bByte As Byte
k = FreeFile Open strAppChe & App.EXEName & ".exe" For Binary As #k Get #k, LOF(k), bByte If bByte = 0 Then Put #k, LOF(k), 1 ElseIf bByte = 1 Then Call MsgBox("Erreur !") Else Put #k, LOF(k) + 1, 1 End If Close #k End Sub
Le problème c'est que je ne vois pas d'alternative évidente (sauf trimballer un fichier avec l'exe) car tout ce qui est BDR & Co ca dépend de la machine, si on copie l'exe sur une autre machine il fonctionnera qd mm...
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Fuxy wrote:
Bonjours,
Voilà je voulais faire un petit logiciel(A) qui ne peut démarrer qu'une seule fois.
Pour cela, je pensais rajouter un octet à la fin de l'exécutable, au début cet octet est à zéro = logiciel jamais démarré.
Ensuite, lors de son 1er démarrage, il s'auto-modifie en mettant son dernier l'octet à 1.
Lors du second démarrage, si l'octet est à 1, il affiche un message indiquant qu'il ne peut plus s'éxécuter.
J'ai crée mon petit logiciel(A), j'ai mis le dernier octet à Zéro avec un autre petit logiciel(B), je l'ai lancé et il fonctionne, par contre, lorsqu'il tente de se modifier tout seul en mettant son dernier octet à 1, j'ai un message d'erreur !
Apparement un logiciel en cours d'exécution ne peut pas se modifier ? c'est une protection de Windows ? Y a t'il une solution ?
Par contre quand le 1er logiciel(A) est arrêté et que je met le dernier octet à 1 avec l'autre logiciel(B), ça fonctionne bien, car si je démarre le 1er logiciel(A) avec l'octet à 1, j'ai bien un message comme quoi il a déja été éxécuté.
Il me faut juste la solution pour que ce soit le 1er logiciel(A) qui puisse s'auto-modifier.
Merci
Fuxy
"ng" a écrit dans le message de news: e$
Salut,
En effet un prog comme celui ci ne fonctionne pas :
A quelque lignes de code près, c'est ce que j'avais fais, mais effectivement, ça Bug ...
"ng" <ng@ngsoft-fr.com> a écrit dans le message de news:
e$8kkYpDFHA.560@TK2MSFTNGP15.phx.gbl...
Salut,
En effet un prog comme celui ci ne fonctionne pas :
A quelque lignes de code près, c'est ce que j'avais fais, mais
effectivement, ça Bug ...
En effet un prog comme celui ci ne fonctionne pas :
A quelque lignes de code près, c'est ce que j'avais fais, mais effectivement, ça Bug ...
jean-marc
"Fuxy" wrote in message news:4209ef7f$0$623$
"ng" a écrit dans le message de news: e$ > Salut, > > En effet un prog comme celui ci ne fonctionne pas : > A quelque lignes de code près, c'est ce que j'avais fais, mais effectivement, ça Bug ...
Hello,
tu ne peux pas modifier un exe en cours d'exécution et c'est normal. Moi je ferais comme ça: j'aurais un exe avec une TextBox et ton text à afficher. Au lancement du programme, je récupérerais le texte de la textBox, je calculerai un Hash MD5, puis j'irais vérifier dans la base de registre dans la section de ton programme si cette valeur existe ou non. Si non, je l'ajoute. Si oui, j'affiche "Déja exécuté ou déja lu".
Ca te permet d'être sur que chaque exe différent (donc avec texte différent) ne peut être exécuté qu une fois.
Attention: c'est NUL comme protection, mais pour faire un petit jeu entre amis, c'est sans doute suffisant.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
"Fuxy" <vbload@free.fr> wrote in message
news:4209ef7f$0$623$636a15ce@news.free.fr...
"ng" <ng@ngsoft-fr.com> a écrit dans le message de news:
e$8kkYpDFHA.560@TK2MSFTNGP15.phx.gbl...
> Salut,
>
> En effet un prog comme celui ci ne fonctionne pas :
>
A quelque lignes de code près, c'est ce que j'avais fais, mais
effectivement, ça Bug ...
Hello,
tu ne peux pas modifier un exe en cours d'exécution et c'est normal.
Moi je ferais comme ça:
j'aurais un exe avec une TextBox et ton text à afficher.
Au lancement du programme, je récupérerais le texte de la
textBox, je calculerai un Hash MD5, puis j'irais vérifier dans la base de
registre dans la section de ton programme si cette valeur existe ou non.
Si non, je l'ajoute. Si oui, j'affiche "Déja exécuté ou déja lu".
Ca te permet d'être sur que chaque exe différent (donc avec texte différent)
ne peut être exécuté qu une fois.
Attention: c'est NUL comme protection, mais pour faire un petit jeu entre
amis,
c'est sans doute suffisant.
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
"ng" a écrit dans le message de news: e$ > Salut, > > En effet un prog comme celui ci ne fonctionne pas : > A quelque lignes de code près, c'est ce que j'avais fais, mais effectivement, ça Bug ...
Hello,
tu ne peux pas modifier un exe en cours d'exécution et c'est normal. Moi je ferais comme ça: j'aurais un exe avec une TextBox et ton text à afficher. Au lancement du programme, je récupérerais le texte de la textBox, je calculerai un Hash MD5, puis j'irais vérifier dans la base de registre dans la section de ton programme si cette valeur existe ou non. Si non, je l'ajoute. Si oui, j'affiche "Déja exécuté ou déja lu".
Ca te permet d'être sur que chaque exe différent (donc avec texte différent) ne peut être exécuté qu une fois.
Attention: c'est NUL comme protection, mais pour faire un petit jeu entre amis, c'est sans doute suffisant.
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
ng
et pourquoi pas une Private Const str As String = "eee" à la place du txtbox ?
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
jean-marc wrote:
"Fuxy" wrote in message news:4209ef7f$0$623$
"ng" a écrit dans le message de news: e$
Salut,
En effet un prog comme celui ci ne fonctionne pas :
A quelque lignes de code près, c'est ce que j'avais fais, mais effectivement, ça Bug ...
Hello,
tu ne peux pas modifier un exe en cours d'exécution et c'est normal. Moi je ferais comme ça: j'aurais un exe avec une TextBox et ton text à afficher. Au lancement du programme, je récupérerais le texte de la textBox, je calculerai un Hash MD5, puis j'irais vérifier dans la base de registre dans la section de ton programme si cette valeur existe ou non. Si non, je l'ajoute. Si oui, j'affiche "Déja exécuté ou déja lu".
Ca te permet d'être sur que chaque exe différent (donc avec texte différent) ne peut être exécuté qu une fois.
Attention: c'est NUL comme protection, mais pour faire un petit jeu entre amis, c'est sans doute suffisant.
et pourquoi pas une Private Const str As String = "eee" à la place du txtbox
?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
jean-marc wrote:
"Fuxy" <vbload@free.fr> wrote in message
news:4209ef7f$0$623$636a15ce@news.free.fr...
"ng" <ng@ngsoft-fr.com> a écrit dans le message de news:
e$8kkYpDFHA.560@TK2MSFTNGP15.phx.gbl...
Salut,
En effet un prog comme celui ci ne fonctionne pas :
A quelque lignes de code près, c'est ce que j'avais fais, mais
effectivement, ça Bug ...
Hello,
tu ne peux pas modifier un exe en cours d'exécution et c'est normal.
Moi je ferais comme ça:
j'aurais un exe avec une TextBox et ton text à afficher.
Au lancement du programme, je récupérerais le texte de la
textBox, je calculerai un Hash MD5, puis j'irais vérifier dans la
base de registre dans la section de ton programme si cette valeur
existe ou non.
Si non, je l'ajoute. Si oui, j'affiche "Déja exécuté ou déja lu".
Ca te permet d'être sur que chaque exe différent (donc avec texte
différent) ne peut être exécuté qu une fois.
Attention: c'est NUL comme protection, mais pour faire un petit jeu
entre amis,
c'est sans doute suffisant.
et pourquoi pas une Private Const str As String = "eee" à la place du txtbox ?
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
jean-marc wrote:
"Fuxy" wrote in message news:4209ef7f$0$623$
"ng" a écrit dans le message de news: e$
Salut,
En effet un prog comme celui ci ne fonctionne pas :
A quelque lignes de code près, c'est ce que j'avais fais, mais effectivement, ça Bug ...
Hello,
tu ne peux pas modifier un exe en cours d'exécution et c'est normal. Moi je ferais comme ça: j'aurais un exe avec une TextBox et ton text à afficher. Au lancement du programme, je récupérerais le texte de la textBox, je calculerai un Hash MD5, puis j'irais vérifier dans la base de registre dans la section de ton programme si cette valeur existe ou non. Si non, je l'ajoute. Si oui, j'affiche "Déja exécuté ou déja lu".
Ca te permet d'être sur que chaque exe différent (donc avec texte différent) ne peut être exécuté qu une fois.
Attention: c'est NUL comme protection, mais pour faire un petit jeu entre amis, c'est sans doute suffisant.
Fuxy
Le soucis c'est que le programme est exécutable sur un autre PC .. et je veux pas
Le soucis c'est que le programme est exécutable sur un autre PC .. et je
veux pas