autorisation d'écriture fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Cengokill
Niveau 2
Niveau 2
Messages : 18
Enregistré le : ven. 07 août 2020 18:47
Status : Hors ligne

autorisation d'écriture fichier

#1

Message par Cengokill »

Bonjour à tous, je viens de créer un programme qui écrit dans un fichier texte, avec les fonctions FileOpen() et FileWrite().
Ce programme fonctionne parfaitement bien lorsqu’il est exécuté en tant que script non compilé.

En revanche, lorsque je le compile, puis créer un installateur avec Inno Setup, le programme ne modifie pas le fichier texte.
Je pense donc que c'est une erreur due à l'autorisation d'écriture dans le fichier, puisque moi-même je ne peux pas modifier le fichier manuellement (qui se trouve dans Programe Files (x86)).

Code : Tout sélectionner

If Not FileExists("langue.txt") Then
	Local $hFileOpen = FileOpen("langue.txt", 2)
	Filewrite($hFileOpen,"FR")
	FileClose($hFileOpen)
	Global $LANGAGE="FR"
EndIf
Ce bout de code fonctionne lorsque le programme n'est pas installé sur l'ordinateur.


Sauriez-vous comment autoriser mon programme à écrire dans ce fichier ?

Merci d'avance !
_____ Cengokill ______
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: autorisation d'écriture fichier  

#2

Message par jguinch »

L'écriture dans les dossiers "Program Files", "Program Files (x86)" et autres nécessitent une élévation de privilèges.
Pour indiquer au script qu'il doit demander une élévation de privilèges, il faut utiliser la directive #RequireAdmin en début de script.

Maintenant, si le script compilé fait partie de ton installeur, le mieux est de compiler l'installeur Inno Setup en lui indiquant d'utiliser les privilèges admin (PrivilegesRequired=admin)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Cengokill
Niveau 2
Niveau 2
Messages : 18
Enregistré le : ven. 07 août 2020 18:47
Status : Hors ligne

Re: autorisation d'écriture fichier

#3

Message par Cengokill »

Merci de ton aide, quand je lance mon programme manuellement, ça fonctionne !
Mais la correction du problème en créer un nouveau : quand j'installe le programme, à la fin j'ai un code d'erreur 740 qui me dit que je dois augmenter les privilèges pour exécuter l'exécutable du programme.
Pourtant j'ai bien ajouté la ligne PrivilegesRequired=admin dans InnoSetup (au tout début, après [Setup]).
J'ai bien cette ligne à la fin de mon fichier Inno Setup aussi :
{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

Edit : Il fallait mettre cette ligne après Filename sous [Run] :
Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: runascurrentuser nowait postinstall skipifsilent

Tout fonctionne, merci ! :lol:
_____ Cengokill ______
Répondre