IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Droits dans Program Files (x86).


Sujet :

Python

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut Droits dans Program Files (x86).
    Salut les pythons,
    J'ai compiler un programme pour windows avec un installateur le problème est que une fois le programme installé, dont le dossier ou il est installé (Program Files (x86)) contient un fichier dont se sert le programme pour écrire dedans et ca ne marche pas. Pour cause: le fichier n'est pas accessible en écriture pour l'utilisateur et je ne connait pas du tout Windows ou même le python pour Windows. J'ai donc changer les droits de l'utilisateur afin qu'il un droit d'écriture avec le menu des propriétés mais je ne sais pas comment faire cela en python sous Windows afin que l'utilisateur final n'ai pas a effectuer cette opération a la main.
    J'ai essayer avec les module os et stat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>>os.access('c:\chemin\vers\mon\fichier\dans\Program Files (x86)\fichier', 0777)
    True #pourquoi il me renvoie True
    >>>os.access(('c:\chemin\vers\mon\fichier\dans\Program Files (x86)\fichier', stat.S_IRWXU)
    True #pourquoi il me renvoie True
    J'aimerai bien introduire un os.chmod() dans le code source si c'est la solution mais je ne sais pas comment m'y prendre.
    Merci pour vos réponses.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 476
    Points : 9 280
    Points
    9 280
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    A mon avis, ce n'est pas une bonne idée de faire écrire un programme à l'endroit où il est installé.

    On peut par contre créer un répertoire dans le home de l'utilisateur, qu'on trouve avec os.path.expanduser('~') (valable pour Windows et Linux). Et là, il n'y a pas de problème d'écriture. Avantage supplémentaire, un autre utilisateur exécutant ce même programme n'aura accès qu'à ses données dans son propre home.

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Je suis du même avis que tyrtamos mais plutôt que d’utiliser directement le home de l'utilisateur vous avez dedans un espace de stockage pour cela : Application Data.
    Pas de Windows pour tester mais avec Windows XP il me semble que cela était accessible via os.environ['APPDATA']. A voir sous les versions suivantes.
    Sinon via la base de registre (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders il me semble, ou juste à coté ): A vous de voir.


    @+

  4. #4
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Ceci dit si le fichier doit être unique pour tous le utilisateurs il existe aussi un appdata dans all users...
    Note: Il me semble que sous Windows 7 il existe une variable d’environnement ALLUSERSPROFILE (en fait partition:\ProgramData)

  5. #5
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Merci pour vos solutions alternatives, c'est mieux coté sécurité de l'OS de créer un dossier dans le ~ de l'utilisateur et d'y stocker les données mais pour mon programme qui est destiner aux utilisateurs lambda il aurai été mieux de laisser le fichier dans Program Files (x86) car comme ca il ne peut pas y toucher ou l'effacé ne savant pas ce que c'est.
    Vous n'avez pas répondu a ma question mais proposé une alternative a laquelle je n'ai pas pensé d'ailleurs je fait comme ca sous Linux. Merci pour vos solutions qui sont de bonnes idées mais je n'ai rien appris il est temps que je me mette au power shell et a winreg.
    Merci pour vos réponses.

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Ce n'est effectivement pas la réponse à la question:
    Sous Linux vous mettriez un fichier en écriture dans /usr/bin ? Non, vous mettriez celui ci dans /home/<utilisateur>/.monfichier.
    De ce fait la réponse de tyrtamos est juste mais:
    Les os Windows disposent d'un répertoire pour cela donc pourquoi ne pas l'utiliser ?

  7. #7
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 476
    Points : 9 280
    Points
    9 280
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    La variable d'environnement APPDATA existe sous Windows XP et sous Windows 7:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Windows XP
    APPDATA = C:\Documents and Settings\tyrtamos\Application Data
     
    # Windows 7
    APPDATA = C:\Users\tyrtamos\AppData\Roaming
    Si on veut quelque chose de public afin que tous les utilisateurs y ait accès, ça se gâte un peu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # Windows XP
    ALLUSERSPROFILE = C:\Documents and Settings\All Users
     
    # Windows 7
    ALLUSERSPROFILE = C:\ProgramData
    PUBLIC = C:\Users\Public
    Donc: il y a bien un répertoire "Application Data" dans "All Users" sous Windows XP, mais il n'y a pas de répertoire AppData\Roaming dans "Public", et la clé "ALLUSERSPROFILE", qui existe aussi sous Windows 7, pointe sur "C:\ProgramData" pour lequel l'utilisateur n'a pas le droit d'écriture...

    En bref, c'est le bazar habituel chez Windows...

    Et en ce qui concerne les modifications des droits sous Windows, il y a longtemps que j'ai renoncé à comprendre comment ça marche, et que je refuse d'y toucher. Alors que la gestion des droits sous Unix est limpide: Microsoft serait bien inspiré de faire comme Apple avec son Mac OS X: reprendre un noyau Unix pour le prochain Windows!!!

Discussions similaires

  1. Copie des dll dans Program Files (x86) sous windows 7 64 bits
    Par dot-_-net dans le forum Général Java
    Réponses: 5
    Dernier message: 03/03/2011, 11h52
  2. Copie d'une dll dans Program Files sous Windows 7
    Par Jean-Marie64 dans le forum Installation, Déploiement et Sécurité
    Réponses: 1
    Dernier message: 12/05/2010, 15h14
  3. Réponses: 2
    Dernier message: 09/03/2010, 18h23
  4. Réponses: 8
    Dernier message: 26/12/2009, 15h18
  5. [Installation] Installer Qt dans Program Files
    Par Nykoo dans le forum Débuter
    Réponses: 10
    Dernier message: 09/05/2008, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo