PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Droits dans programData sous Widows 7
Droits dans programData sous Widows 7
Débuté par titioun, 18 sep. 2014 16:23 - 12 réponses
Membre enregistré
92 messages
Popularité : +2 (2 votes)
Posté le 18 septembre 2014 - 16:23
Bonjour,

Je voudrais mettre un fichier ini dans ProgramData
Pour cela dans l'assistant je choisis <RepDonneescommun> et l'install fontionne bein.

Cependant impossible d'écrire dans le fichier ini depuis l'application tant qu'on ne fait pas une modification à la main du fichier .ini.

Windows 7 ne donne pas le droit d'écrire la première fois

J'ai constaté ce problème sur 3 pc différents

Est-ce normal ?

Avez-vous une solution ?

Merci
Membre enregistré
92 messages
Popularité : +2 (2 votes)
Posté le 21 septembre 2014 - 10:23
Bonjour
je remonte le post resté sans réponse.

Merci
Posté le 21 septembre 2014 - 15:37
Bonjour

vérifie, mais on dirait que ton fichier est en lecture seule

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXReplication, votre système de réplication open source est
disponible sur mon site web !!!
WXShowroom.com : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 9/18/2014 8:23 AM, titioun wrote:
Bonjour,

Je voudrais mettre un fichier ini dans ProgramData
Pour cela dans l'assistant je choisis <RepDonneescommun> et l'install
fontionne bein.

Cependant impossible d'écrire dans le fichier ini depuis l'application
tant qu'on ne fait pas une modification à la main du fichier .ini.
Windows 7 ne donne pas le droit d'écrire la première fois
J'ai constaté ce problème sur 3 pc différents

Est-ce normal ?

Avez-vous une solution ?

Merci
Membre enregistré
280 messages
Popularité : +22 (28 votes)
Posté le 22 septembre 2014 - 04:18
Bonjour,

En fait tu dois, dans l'initialisation de ton projet, créer un répertoire dans ProgramData comme suit :

gsMonRépertoireDansprogramData est une chaîne=SysRep(srAppDataCommun)+["\"]+"Mon_répertoire\"
fRepCrée(gsMonRépertoireDansprogramData)


Celui-ci sera accessible par ton application, ainsi que tous les fichiers que tu ajouteras après les lignes ci-dessus.
N'oublies pas non plus lors de la création de l'exécutable Windows :
- dans le plan 1/2, Contrôle des comptes utilisateur(UAC) : Intégrer un manifeste pour Windows Vista et supérieur.
- dans le plan 2/2 : Mon application ne nécessite pas de privilège particulier ( cette option par défaut suffit ! )

--
Cordialement.

Olivier
http://www.impulse-web.com
Membre enregistré
92 messages
Popularité : +2 (2 votes)
Posté le 22 septembre 2014 - 09:29
Bonjour,

Merci pour l'aide.

Fabrice, le fichier est bien en lecture/écriture.

Olivier, le problème c'est que l'install crée ce dossier automatiquement
Pour l'UAC je choisis bien le manifeste et le pas de privilège particulier.

Note que sous W18 et W17 j'avais déjà eu ce problème mais je pensais que c'était lié au PC.

je suis surpris d'être le seul dans ce cas. Ou alors c'est parce que j'utilise encore des .ini ?

Pensez-vous qu'un manifieste spécial soit la solution ?

Merci
Membre enregistré
148 messages
Popularité : +3 (3 votes)
Posté le 22 septembre 2014 - 09:49
bonjour

Perso, je n'utilise pas ce dossier pour ce genre d'action, justement à cause des droits.
Mais dans un répertoire accessible soit à l'ensemble des utilisateurs, soit à l'utilisateur uniquement.
Membre enregistré
92 messages
Popularité : +2 (2 votes)
Posté le 22 septembre 2014 - 10:17
j'ai bien pensé aussi le mettre dans Users, mais comme souvent on aime pas trop que les Users bricole dans le fichier ini.
Membre enregistré
148 messages
Popularité : +3 (3 votes)
Posté le 22 septembre 2014 - 10:28
titioun a écrit :
> j'ai bien pensé aussi le mettre dans Users, mais comme souvent on aime pas trop que les Users bricole dans le fichier ini.
du coup je crypte le contenu.
si jamais ils y touchent, cela ne fonctionne plus. et on sait donc qu'ils y ont touché.
Membre enregistré
92 messages
Popularité : +2 (2 votes)
Posté le 22 septembre 2014 - 11:20
pas bête juste avec les fonction crypte et decrypte en lecture ?
Membre enregistré
92 messages
Popularité : +2 (2 votes)
Posté le 22 septembre 2014 - 12:21
du coup pas moyen d'éditer dutout.
Comment ça marche ?

Il faut se faire un petit utilitaire pour modifier l'ini ?
Posté le 22 septembre 2014 - 13:30
Il va vraiment falloir que tu nous montre ton code, avec le détail des
répertoires utilisés, parceque la on parle de plus en plus dans le vide

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

NOUVEAU: WXReplication, votre système de réplication open source est
disponible sur mon site web !!!
WXShowroom.com : Montrez vos projets !
Plus d'information sur http://fabriceharari.com


On 9/22/2014 4:21 AM, titioun wrote:
du coup pas moyen d'éditer dutout. Comment ça marche ?

Il faut se faire un petit utilitaire pour modifier l'ini ?
Membre enregistré
92 messages
Popularité : +2 (2 votes)
Posté le 22 septembre 2014 - 14:23
Mon code d'install :

1/ integrer un manifaste pour Windows
2/Mon application ne nécessite pas de privilège particulier
3/ Création de l'exe 32 bits
4/ installation individuelle
5/installation standard
6/ Répertoire d'installation de l'exe
C:\Program Files (x86)\Ma Societe\MonoCAD
7/ <RepDonneesCommun>\Template.xltm
<RepInst>\MonoCAD.dll
<RepInst>\MonoCAD.exe X
<RepInst>\MONOCAD.ICO
<RepDonneesCommun>\MonoCAD.ini
<RepInst>\ZedGraph.dll
8/Pas de base de données

Mon code de lecture de l'ini
Déclaration en global
//fichier INI du programme dans le répertoire programData
gsFichierIni = fRepGlobalCommun() + "\Ma Societe\MonoCAD\MonoCAD.ini"
SI fFichierExiste(gsFichierIni)=Faux ALORS
CréerFichierIni()
SINON
READ_INI()
FIN

Lecture de l'ini :
sRes est une chaîne
sRes = INILit("EXEC", "LANGUAGE", "", gsFichierIni)
SI sRes = "" ALORS Error_Ini_File() // on teste la présence du fichier ini où uon le crée.
// lecture du parametre de langue
SELON sRes
CAS "Fr" : // Français
Nation(nationFrançais)

CAS "En" :// Anglais
Nation(nationAnglais)
FIN
.........


Ecriture dans l'ini a à l'aide d'un procédure WRITE_Ini
W_Retour = INIEcrit(section,clé,valeur,gsFichierIni)
SI W_Retour = "" ALORS Erreur("Error within MonoCAD.ini file")
Posté le 24 septembre 2014 - 00:59
Il faudrait plutôt, une fois pour toutes, expliquer que ce répertoire n'est pas accessible si on n'a pas les droits d'y écrire.
Et arrêter de prendre les gens pour des abrutis.

Quand on a fait un seul programme qui essaye d'écrire dans ce répertoire, on sait que si on n'a pas les droits, ça ne marche pas. point barre.
Et quand on n'a pas les droits d'y écrire, on se connecte en tant qu'administrateur et on donne les droits à celui qui doit y écrire. C'est tout.