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

C++ Discussion :

Appli C++: accéder à répertoires systèmes Win 7 sans droits d'admin


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 21
    Points : 16
    Points
    16
    Par défaut Appli C++: accéder à répertoires systèmes Win 7 sans droits d'admin
    Bonjour les gens,

    alors par avance désolé si la question a déjà été posée, le forum est bien vaste !
    Mon problème est le suivant:
    j'ai une appli C++ (Visual Studio 2005) qui accède à des fichiers stockés dans des répertoires systèmes (C:\windows, c:\Program Files.....).
    En fait cette appli a été développée pour tourner sous Win XP et avec ce dernier cela ne pose pas de pbm pour accéder à ces répertoires.
    Avec Windows 7, si le user a des droits d'admin, l'application tourne toujours. En revanche si le user n'a pas les droits d'admin (chez certains clients la politique est de refuser les droits d'admin à de simple user), cela devient problématique.

    Ma question (peut être naïve) est la suivante:
    est ce qu'il y a un moyen pour que l'application lancée par un user sans droits d'admin et sans que ce dernier doit l"exécuter en tant qu'administrateur puisse modifier des fichiers du répertoire système ?

    Voilà, merci d'avoir lu mon post et merci d'avance pour votre réponse

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    La réponse est simple: non... Les droits d'accès ont été très bien améliorés sous vista / seven
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Citation Envoyé par koala01 Voir le message
    La réponse est simple: non... Les droits d'accès ont été très bien améliorés sous vista / seven
    Mais est-ce qu'il n'y a pas un moyen de faire exécuter le programme par un utilisateur ayant des droits d'administrateurs ou de changer l'utilisateur courant lors de l'exécution même du programme ( une sorte d’équivalent à su sous Linux) ?

    Ou alors d'accorder au programme des droits d'administration une fois pour toute grâce à l'intervention de l'utilisateur ?

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Pour autant que je sache, il est possible, si l'utilisateur a déjà les droits d'administrateur, de faire exécuter des taches en tant qu'utilisateur alors que l'application a été lancée sans ces droits (avec cette fameuse fenêtre "windows a besoin de votre autorisation pour continuer"). Mais:
    Si l'utilisateur n'a pas les droits d'administrateur, il faut qu'il s'authentifie de sorte a avoir ces droits avant de pouvoir le faire
    Si tu ne connais pas le mot de passe de l'administrateur, tu ne peux pas t'authentifier, et donc obtenir l'autorisation.

    On se rapproche ici du fonctionnement de su / sudo sous linux
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Pour préciser : Une demande d'obtention de ces droits a lieu uniquement au lancement du programme. Ça se fait au niveau du manifeste de l'exécutable. Ce qui signifie que si tu n'as pas tout le temps besoin de ces droits, il faut que tu isoles la partie en ayant besoin dans un exécutable spécifique.

    Je ne sais pas pour quelle raison tu veux modifier des répertoires système, mais il y a généralement 2 cas :
    - Tu es un utilitaire ayant besoin d'y faire des modifications, il est légitime que l'on te demande les droits qui vont bien pour le faire
    - Tu es un vieux programme qui sauve des données dans ton répertoire de setup, au lieu de les sauver dans le profil de l'utilisateur. Le plus simple dans ce cas est peut-être de modifier ta politique de sauvegarde.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Bonjour/bonsoir les gens.

    Déjà, merci à tous pour vos réponses et participation !
    On se sent moins seul face au problème

    @JolyLoic:
    c'est le deuxième cas. C'est une appli relativement ancienne.
    Et effectivement une de nos solutions est d'utiliser d'autres répertoires que ceux du système.

    Pour le manifest, il me semble que cela revient à lancer l'exécutable en tant qu'administrateur. Je ne sais pas si les clients autorisent ça.

    Enfin encore merci pour vos réponses

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si l'application en question ne modifie que des fichiers lui appartenant (par exemple, uniquement des fichiers dans son sous-dossier de Program Files) alors le plus simple est qu'un programme lancé avec les droits d'admin (qui peut avoir été déployé et lancé grâce aux fonctions d'administration de Windows) donne aux utilisateurs non-admin les droits sur le sous-dossier en question. C'est ce que fait Steam lorsqu'on l'installe, par exemple.

    Attention: sous aucun prétexte ne faire ça sur le répertoire Program Files complet.
    Aussi si possible, éviter de faire ça d'une manière qui permette à l'utilisateur de modifier les exécutables du programme lui-même. Dans la mesure du possible, n'autoriser les modifications que sur les fichiers concernés.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    @Médinoc
    Merci pour votre réponse !

    Je vais devoir peut être adapter cette solution mais sur un autre répertoire:
    ProgramData.

    A ce qu'il semble, Microsoft préconise de séparer les fichiers spécifique à l'application et les fichiers data de l'application.
    http://www.microsoft.com/en-us/downl...s.aspx?id=3859

    Pour l'application, cela devrait partir dans Program Files, pour les fichiers data partagés par des users, cela irait dans ProgramData.

    Mais concernant ProgramData, si on lance en tant que user non admin, il semble qu'on a des soucis de virtualisation (VirtualStore).
    De plus il semble aussi que par défaut, les sous répertoires déclarés dans ProgramData ne sont pas full access pour les users non admin.
    Droits en lecture et création oui mais les droits en suppression sont restreints aux owners, admin...Etc.

    Ca vous dit quelque chose ? Est ce que le setup ou le programme qui créée ces fichiers doivent explicitement mettre des droits full access à ces sous répertoire dans ProgramData ?
    Qu'en pensez vous ?

    D'avance merci !

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    "C:\ProgramData", c'est à la fois l'ancien "All Users" et l'ancien "All Users\Application Data" (du moins, sous Vista).

    Normalement, les utilisateurs non-admins ont des droits d'écriture partiels sur son contenu.

    Si tu veux un sous-répertoire complètement partagé, tu dois en effet rajouter plus de droits dessus (même si pas forcément Full Control: Change peut suffire). Et ça, c'est typiquement au programme d'installation de le faire, puisque lui il tourne typiquement en Admin.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Installer vcredist_x86 sans droit d'admin
    Par Alwik dans le forum Visual C++
    Réponses: 4
    Dernier message: 08/02/2011, 20h37
  2. Installer 1 EXTENSION pour Firefox SANS droit d'admin
    Par jyloup dans le forum XML/XSL et SOAP
    Réponses: 0
    Dernier message: 25/02/2010, 16h02
  3. installer 1 Extension pr Firefox SANS droit d'admin
    Par jyloup dans le forum Firefox
    Réponses: 0
    Dernier message: 25/02/2010, 15h50
  4. Installer SQL Server sans droits d'admin Windows
    Par dily0403 dans le forum Administration
    Réponses: 3
    Dernier message: 25/11/2008, 21h46
  5. ecriture dans le registre sans droit d'admin
    Par Tetzor dans le forum VBScript
    Réponses: 19
    Dernier message: 10/09/2008, 11h42

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