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 :

�criture dans un fichier sous Vista


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut �criture dans un fichier sous Vista
    Bonjour � tous,
    Je souhaite pouvoir lire/�crire dans un fichier se situant dans C:/Program Files/.../... Pour ce qui est de la lecture, aucun probl�me avec fopen() mais en ce qui concerne l'�criture, impossible d'ouvrir de fichier en mode �criture avec fopen(). Le probl�me vient sans doute des permissions sous Vista puisque le fopen() en mode �criture fonctionne dans les r�pertoires de l'utilisateur courant (mes documents, bureau etc...).
    J'ai tent� d'utiliser <fstream> ou <ofstream> mais le probl�me reste exactement le m�me. Je n'ai trouv� aucune documentation relative � ce probl�me c'est pourquoi je fais appel � vous

    Merci d'avance

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ben en effet, un utilisateur normal n'a pas le droit de modifier un fichier dans Program Files, sauf si on lui en donne explicitement le droit (comme c'est le cas quand on installe un vieux jeu qui met ses sauvegardes dans Program Files).

    J'ignore si ta version de Vista offre une UI pour ajuster les droits, mais au pire tu peux le faire avec l'outil en ligne de commande CACLS (attention � ce que tu fais, en pas oublier le param�tre /E dans la plupart des cas).
    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut
    Merci pour cette r�ponse rapide!

    Pour l'instant je d�veloppe une classe sous dev-cpp pour interragir avec ces fichiers situ�s dans C:/Program Files/.../... Mais je compte cr�er un projet MFC sous visual c++ pour proposer une interface user-friendly.
    Lorsque je lancerai mon programme compil�, Vista va sans doute me demander si je souhaite accorder la permission � ce programme? Cela signifie-t-il que l'interdiction sur l'�criture de fichier dans c:/... sera lev�e?

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Vista ne demande pas �a tout seul: Il faut avoir un manifeste dans les ressources du programmes.

    Ce qui est important, c'est fonctionnellement � quoi sert ton programme:
    • Soit c'est une interface d'administration de quelque chose, et donc il est normal que seuls les administrateurs y aient acc�s ---> Utiliser un manifeste pour demander l'�l�vation sous Vista
    • Soit c'est pour acc�der � des fichiers qui devraient normalement �tre modifiables par un utilisateur normal (comme des sauvegardes d'un vieux jeu) ---> Changer les droits des fichiers.
    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.

  5. #5
    Expert confirm�
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par d�faut
    En gros tout �a est li� � l'UAC ( User Account Control ) de Windows Vista.
    CodeProject dispose de plusieurs sources qui te seraient utiles dans ton cas :
    http://www.codeproject.com/KB/vista-...ount%20Control

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut
    Merci smyley pour ton lien.
    Pour r�pondre � M�dinoc, mon programme doit pouvoir �tre utilis� par n'importe quel utilisateur sans soucis mais doit obtenir les privil�ges administrateur pour modifier des fichiers dans c:/program files/. A priori, tu as raison, je dois d�finir requestedExecutionLevel de telle sorte que le programme acquiert les droits d'administrateur (si j'ai bien tout compris). Reste � savoir comment faire

  7. #7
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Le probl�me, c'est qu'un programme ne peut pas "passer" administrateur: Il peut seulement �tre lanc� admin.
    Donc, tu vas devoir d�composer ton utilitaire en deux ex�cutables: L'un "normal", l'un pour les fonctions d'administration (qui pourra �tre lanc� par l'autre avec ShellExecute()).
    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
    Expert confirm�
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par d�faut
    Citation Envoy� par M�dinoc Voir le message
    d�composer ton utilitaire en deux ex�cutables
    Il est aussi possible de le faire via des objets COM car avec Vista il existe une fonction CreateElevatedComObject ( cherche sur Google pour plus d'infos )

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Retrouv�:
    http://msdn2.microsoft.com/en-us/library/ms679687.aspx

    De plus, il est fort probable que �a ne marche pas en Inproc.


    ...Mais si tu ne connais pas COM, tu perdras moins de temps en s�parant ton code en deux exes...
    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.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut
    Ca devient un peu compliqu� pour une simple �criture de fichier... Ce que je ne comprends pas c'est que des programmes qui datent de bien avant Vista arrive sans soucis � modifier des fichiers dans c:/ sans m�me demander des droits d'admin...
    Pour revenir � mon probl�me, ne puis-je point forcer l'utilisateur � executer le programme avec les privil�ges d'admin?

  11. #11
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Et comment fera un utilisateur ordinaire pour modifier les param�tres que lui a le droit de modifier ?

    Si tu veux qu'un utilisateur non-admin puisse utiliser le programme pour modifier certains fichiers dans Program Files, il faut changer les droits des fichiers en question pour qu'ils soient modifiables par le commun des mortels, pas obliger le commun des mortels � devenir des dieux...
    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.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut
    Oui mais j'imagine que pour changer les droits des fichiers en question il faut avoir les privil�ge admin non?

  13. #13
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Oui.
    C'est typiquement ce que fait l'administrateur (ou un programme lanc� par l'administrateur) lors de l'installation du programme.
    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.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut
    D'apr�s ce que j'ai lu, lorsque l'on tente d'�crire dans un fichier de C:/Program Files/ l'�criture fonctionne mais elle est virtuelle... Si j'ai bien compris. Si j'ouvre un fichier en �criture par exemple: c:/program files/essai/test.txt qui contient le texte "abcdef" et que mon programme �crase le contenu de ce fichier pour le remplacer par "ghijkl". Alors, cela aura pour effet de cr�er un fichier dans C:\Users\...\AppData\Local\VirtualStore\Program Files\essai\test.txt qui portera la valeur "ghijkl" mais le fichier original sera conserv� dans Program Files/ avec la valeur "abcdef". Maintenant, si l'utilisateur qui a modifi� le fichier pr�cedemment tente d'y acc�der en lecture par exemple par un programme quelconque. Il obtiendra la valeur "ghijkl". Mais si un autre utilisateur lit le fichier, il aura la valeur de base "abcdef". Etrange mais pas si b�te! Pour mon cas, �a ira

  15. #15
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Si c'est pour faire ce genre de b�tises, tu devrais peut-�tre te poser la question: Pourquoi Program Files ?
    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.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut
    Je ne vois pas de quelle b�tise tu parles. Tout ce que j'en ai conclu c'est qu'il fallait que j'�crive dans Program Files de la mani�re la plus courante qu'il soit sans m'�tonner de voir les fichiers originaux non modifi�. Si tu �tais au courant de �a avant, tu aurais pu m'en parler

  17. #17
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Mais je n'�tais pas au courant de cela.
    Je pensais que Vista refusait simplement l'acc�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.

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut
    Okay Merci de ton aide en tout cas!

  19. #19
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Mais pose-toi quand m�me la question de savoir si tu as vraiment besoin d'�crire dans un fichier dans Program Files.

    Tu as plein d'autres endroits o� �crire: Le dossier Application Data des documents de l'utilisateur, celui de All Users, le registre utilisateur (HKEY_CURRENT_USER\Software), le registre machine (HKEY_LOCAL_MACHINE\Software)...
    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.

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    D�tails du profil
    Informations personnelles :
    �ge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par d�faut
    Oui, �a ne me viendrait pas � l'id�e pour ce genre d'utilisation. Mais enfait il s'agit d'un programme qui permet de g�rer les archives de texture et de mod�les3D d'un jeu vid�o.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 28/10/2011, 21h25
  2. Probl�me d'�criture dans un fichier xml
    Par vanoou dans le forum C++Builder
    R�ponses: 1
    Dernier message: 13/07/2005, 02h28
  3. Suppression de lignes dans un fichier sous dos
    Par ducho dans le forum Windows
    R�ponses: 2
    Dernier message: 16/05/2005, 10h20
  4. R�ponses: 4
    Dernier message: 17/04/2005, 19h25
  5. [JUnit] Junit �criture dans un fichier
    Par mikael35 dans le forum Tests et Performance
    R�ponses: 1
    Dernier message: 10/08/2004, 13h11

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