PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Droits d'écriture sur C:\ProgramData\monappli\data\
Droits d'écriture sur C:\ProgramData\monappli\data\
Iniciado por Yvan, 15,jun. 2013 11:47 - 6 respuestas
Miembro registrado
214 mensajes
Publicado el 15,junio 2013 - 11:47
Bonjour,

Chez certain de mes utilisateurs, sous windows 7, mon application semble ne pas avoir accès en écriture au répertoire des fichiers hyperfilesql.

Je pense toutefois respecter l'UAC, l'exe étant dans c:\program files\monappli et les datas dans C:\ProgramData\monappli\data\ (le répertoire est créé avec SysRep(srAppDataCommun)).

A l'exécution, le problème suivant apparait:
Le fichier <USERS> n'a pas été ouvert avec des droits en écriture. Impossible d'effectuer l'opération.
Ce fichier est pourtant bien dans C:\ProgramData\monappli\data\.

Le problème pourrait-il venir du fait que ce n'est pas l'installeur (wdinst) qui crée le répertoire mais l'application, et que chez certains utilisateurs, ils installent l'application avec les droits d'administrateur (indispensable), ensuite, ils ne lancent pas l'application une première fois avec les droits d'administrateur mais change de session pour passer en mode utilisateur non administrateur, cet utilisateur ouvre l'application qui crée automatiquement le répertoire C:\ProgramData\monappli\data\ avec des droits limités en écriture seulement?

La solution serait-elle dans ce cas de créer le répertoire vide avec l'installeur, mais qu'en est-il des droits fichiers qui seront tout de même créés par l'application lors de son ouverture?

Tout retour d'expérience est le bienvenu!

Merci.
Publicado el 15,junio 2013 - 18:46
Bonjour Yvan

je n'ai jamais vu de cas ou il fallait les droits admin pour écrire dans
C:\ProgramData\monappli\data\... C'est justement une zone destinée au
travail des utilisateurs normaux...

Par contre, j'ai déjà vu des cas ou le programmeur CROYAIT écrire dans
C:\ProgramData\monappli\data\ alors que son code essayait toujours
d'écrire dans le répertoire de l'exécutable (emplacement par défaut des
fichiers)...

je te conseille donc de vérifier exactement (au débuggeur, ou avec un
affichage à l'écran) quel est l'emplacement réel des fichiers juste
avant la ligne qui déclenche l'erreur

Cordialement


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

Nouveau site web (EXPERIMENTAL) http://www.fabriceharari.eu
(Plus d'information sur http://fabriceharari.com/index_FR.html)

On 6/15/2013 3:47 AM, Yvan wrote:
Bonjour,

Chez certain de mes utilisateurs, sous windows 7, mon application semble
ne pas avoir accès en écriture au répertoire des fichiers hyperfilesql.

Je pense toutefois respecter l'UAC, l'exe étant dans c:\program
files\monappli et les datas dans C:\ProgramData\monappli\data\ (le
répertoire est créé avec SysRep(srAppDataCommun)).

A l'exécution, le problème suivant apparait:
Le fichier <USERS> n'a pas été ouvert avec des droits en écriture.
Impossible d'effectuer l'opération.
Ce fichier est pourtant bien dans C:\ProgramData\monappli\data\.

Le problème pourrait-il venir du fait que ce n'est pas l'installeur
(wdinst) qui crée le répertoire mais l'application, et que chez certains
utilisateurs, ils installent l'application avec les droits
d'administrateur (indispensable), ensuite, ils ne lancent pas
l'application une première fois avec les droits d'administrateur mais
change de session pour passer en mode utilisateur non administrateur,
cet utilisateur ouvre l'application qui crée automatiquement le
répertoire C:\ProgramData\monappli\data\ avec des droits limités en
écriture seulement?

La solution serait-elle dans ce cas de créer le répertoire vide avec
l'installeur, mais qu'en est-il des droits fichiers qui seront tout de
même créés par l'application lors de son ouverture?

Tout retour d'expérience est le bienvenu!

Merci.
Publicado el 15,junio 2013 - 19:35
Tous les utilisateurs ont droit de lecture sur ce dossier/fichier.

Par contre les utilisateurs ne peuvent pas écrire si le dossier/fichiers à été créé par l'administrateur ou les droits administrateur.
Je n'utilise pas ce dossier car j'ai toujours eu des problèmes de droits NTFS.
Miembro registrado
214 mensajes
Publicado el 15,junio 2013 - 22:38
Quelques nouvelles précisions:
Un utilisateur rencontrant le problème est admin de son pc (windows 7), mais s'il lance l'application en mode administrateur (via les propriétés du raccourci bureau), ça fonctionne, si il lance l'appli "normalement", ça ne fonctionne pas (je compile l'appli pour qu'elle utilise les droits d'un utilisateur sans privilège car j'ai architecturé en respectant l'UAC, du moins je le croyais) ....
Publicado el 16,junio 2013 - 05:22
Bonjour Yvan

ce que tu décris colle avec mon hypothèse... Un admin a le droit
d'écrire dans program files (le répertoire de ton exe) pas un
utilisateur courant

Cordialement


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

Nouveau site web (EXPERIMENTAL) http://www.fabriceharari.eu
(Plus d'information sur http://fabriceharari.com/index_FR.html)


On 6/15/2013 2:38 PM, Yvan wrote:
Quelques nouvelles précisions:
Un utilisateur rencontrant le problème est admin de son pc (windows 7),
mais s'il lance l'application en mode administrateur (via les propriétés
du raccourci bureau), ça fonctionne, si il lance l'appli "normalement",
ça ne fonctionne pas (je compile l'appli pour qu'elle utilise les droits
d'un utilisateur sans privilège car j'ai architecturé en respectant
l'UAC, du moins je le croyais) ....
Miembro registrado
214 mensajes
Publicado el 16,junio 2013 - 14:17
Bonjour Fabrice,

Merci de l'info, mais après vérification, je suis bien dans le répertoire correct, ceci dit, je n'arrive jamais à reproduire le problème, il survient chez certains clients.
Pour vérifier ton hypothèse, je me suis assuré que j'était dans le bon répertoire de la sorte:
la première action d'écriture que l'application fait dans un des fichiers de la db est un hsupprime().
Dans l'application, avant ce hsupprime, je faisait un hsubstrep("?","C:\ProgramData\monappli\data\")
J'ai ajouté avant un hferme("") car la doc précise que hsubstrep() ne fonctionne que si les fichiers sont fermés (bien qu'à ce stade aucun fichier en théorie n'est encore ouvert).
Je trace le résultat du hferme() et du hsubstrep() dans un log, et ils fonctionnent tous les deux.
Je vais mettre cette version chez le client pour avoir son retour, wait & see...

Yvan
Publicado el 31,octubre 2018 - 19:37
C'est un vieux post, mais je suis exactement sur le même problème. Certains utilisateurs, dont le compte windows est administrateur, n'ont pas les droits d'écriture sur le dossier C:\ProgramData\monappli\ , il faut le modifier à la main.
Quelqu'un a déjà rencontré le problème ?