Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 15 sur 15
  1. #1
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut La Vitualisation des fichier sous Windows 7 et Vista

    L'UAC de Windows 7 et Vista renforce la sécurité du système. Sur le principe, rien à dire. Mais dans les fait, cela se complique quand le fonctionnement n'est pas celui que l'on en attend.

    Essayez de placer des fichiers de données dans le répertoire "ProgramData" prévu à cet effet et vous découvrirez que Windows décidera peut être de virtualiser vos fichiers ! En d'autres termes, il en fera une copie dans le dossier "VirtualStore". Cela peut ne pas poser de problème sauf si vous décidez de mettre à jour les fichiers par exemple. Là, vous découvrirez très probablement que les fichiers Visualisés ne sont pas actualisés, seul l'original l'est ! Vous aurez beau essayer de forcer cette actualisation, rien ni fera car le répertoire VirtualStore est géré directement et seulement par Windows.

    Une des solutions pour résoudre le problème, les Manifestes de Windows mais ils ne sont pas sans imposer quelques contraintes (droits limités, demande de confirmation de lancement d'application...). Personnellement, je n'opte pas pour cela.

    Autre solution, composer avec les contraintes et les libertés que vous accorde Windows. A l'installation de l'application, stockez les fichiers de données dans un répertoire dédié à la racine de "C:" (vous pouvez le rendre invisible pour éviter les mauvaises manipulation de l'utilisateur). Ensuite, dans le code d'initialisation de votre application, utilisez la fonction "Hchangerep" pour rediriger l'application vers le répertoire en question. Et voilà, plus de problèmes de Virtualisation des fichiers de données, plus de problèmes de droits et pas besoin de manifeste.

    Cette solution n'est pas idéal car elle oblige à ne pas utiliser le répertoire ProgramData de Windows mais Pcsoft n'étant pas en mesure de me fournir une explication qui tienne la route, il faut bien trouver une autre solution propre.

    A disposition.

    lololebricoleur

  2. #2
    Membre Expert
    Inscrit en
    août 2010
    Messages
    591
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 591
    Points : 1 125
    Points
    1 125

    Par défaut

    Bonjour,

    Je n'ai absolument rien compris.
    Vous utilisez bien fRepDonnéesUtilisateur et fRepDonnéesCommun ?
    Pourquoi créer un répertoire à la racine de C: ?

  3. #3
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut

    Et bien je vais tenter de vous ré expliquer :

    Les applications que je développe, exploitent des fichiers de données. En toute logique et selon les conseils de Pcsoft, je stocke ces fichiers dans le répertoire prévus à cet effet ("C:\Documents and Settings\All Users\Application Data" sous Windows Xp et "C:\ProgramData" sous Windows 7 et Vista). Cela correspond à la constante système "srAppDataCommun" pour répondre à votre question.

    Les applications, quand à elles, sont stockées dans le dossier "ProgramFiles" sous Xp et "Program".

    Le problème c'est que quand je stocke les fichiers de données dans ce répertoire "ProgramData", Windows les virtualise et en fait une copie dans le "VirtualStore" alors qu'il n'y a pas lieu ! C'est même confirmé par Pcsoft pour info. De plus, ils ne trouvent pas la raison !

    Voilà pourquoi je suis obligé de laisser tomber le dossier "ProgramData", que je ne veux pas utiliser le dossiers destiné à stocker les documents de l'utilisateur (ce n'est pas fait pour cela et les mauvaises manipulations sont vites arrivées) et que donc je crée mon propre répertoire caché à la racine de C:.

    C'est plus clair cette fois ?
    Si vous avez la réponse au mystère, merci de me la transmettre.

    Cordialement,

  4. #4
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut

    Citation Envoyé par Hibernatus34 Voir le message
    Vous utilisez bien fRepDonnéesUtilisateur et fRepDonnéesCommun ?
    Selon moi, les "fRepDonnéesUtilisateur" et "fRepDonnéesCommun" ne sont pas fait pour y stocker les données directement gérée par les applications. Ils correspondent au dossier "Mes documents" en fait. C'est d'ailleurs pour cela que le répertoire "srAppDataCommun" existe et qu'il est caché. J'ai effectivement réalisé des test avec ces dossier Données et le problème de virtualisation ne se pose pas. Mais personnellement, cette solution ne me convient pas.

  5. #5
    Membre Expert
    Inscrit en
    août 2010
    Messages
    591
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 591
    Points : 1 125
    Points
    1 125

    Par défaut

    Bonjour,

    Je suis sous XP dans la journée donc je ne peux pas tester, mais pour moi les choses paraissent simples :
    - fRepDonnéesUtilisateur() : 1 utilisateur, 1 application
    - fRepDonnéesCommun() : tous les utilisateurs, 1 application
    - fRepGlobalUtilisateur() : 1 utilisateur, N applications
    - fRepGlobalCommun() : tous les utilisateurs, N applications

    La grande différence avec "Mes Documents", c'est que l'utilisateur n'est pas censé aller dans ces répertoires avec l'explorateur, même s'il le peut s'il est avisé.
    Prenez un ordinateur d'utilisateur lambda, et allez dans ces répertoires avec l'explorateur. C'est beaucoup moins rapide et facile que "Mes Documents". Du moins, pour l'utilisateur lambda. Et pour les autres, répertoires cachés ou pas, ils trouveront toujours.

  6. #6
    Membre Expert
    Inscrit en
    août 2010
    Messages
    591
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 591
    Points : 1 125
    Points
    1 125

    Par défaut

    Citation Envoyé par lololebricoleur Voir le message
    Selon moi, les "fRepDonnéesUtilisateur" et "fRepDonnéesCommun" ne sont pas fait pour y stocker les données directement gérée par les applications.
    Il sont dédiés à ça pourtant.

  7. #7
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut

    Je prend note des informations et je refais des tests.

    A suivre...

  8. #8
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut Résultats de mes derniers tests...

    J'ai utilisé fRepDonnéesCommun() comme chemin de stockage de mes fichiers de données.

    Sous Windows 7 et Vista, fRepDonnéesCommun() correspond au répertoire ProgramData présent à la racine du disque système.

    Après installation, mes fichiers de données sont installés au bon endroit.
    Au lancement de l'application, j'utilise la fonction "ChangeRep" pour diriger l'application vers fRepDonnéesCommun().

    Résultat :
    Dès que j'apporte une modification à un des fichier de données, il est automatiquement dupliqué par Windows dans le VirtualStore !

    Conclusion, j'en suis toujours au même point et j'ai toujours le même soucis.

  9. #9
    Membre Expert
    Inscrit en
    août 2010
    Messages
    591
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 591
    Points : 1 125
    Points
    1 125

    Par défaut

    Je testerai dès que j'aurai accès à Win7.

    Je n'en suis pas certain, mais il me semble qu'il faut des privilèges pour écrire dans ProgramData.
    Et je pense (toujours pas sûr) que le bon protocole est le suivant :
    - L'installateur (qui a les privilèges) crée le répertoire.
    - Il donne le droit d'écriture à tout les utilisateurs pour ce répertoire.
    - L'application peut ainsi démarrer sans privilège, sous n'importe quel compte, et écrire dans le répertoire en question.

  10. #10
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut

    Quand j'intègre un manifeste au fichier exe, le problème disparait. Mais cela implique une confirmation à chaque démarrage de l'application pour les utilisateurs ayant des droits d'administrateur.

    Les applications que je distribue sont utilisées par des petites entreprises qui ne sont, en général, pas très férues d'informatique. J'ai besoin que l’installation et l'utilisation soient simple.

    Je continue de chercher mais je ne trouve pas de solution idéale. Soit les fichiers sont virtualisés, soit ils sont stockés dans une répertoire inapproprié, soit j'ai des problèmes de droits et de messages de confirmation.

    En l'état, je reste sur la solution d'un répertoire caché et créé à la racine du disque système.

  11. #11
    Membre Expert
    Inscrit en
    août 2010
    Messages
    591
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 591
    Points : 1 125
    Points
    1 125

    Par défaut

    Bonjour,

    J'ai regardé chez moi sur un Win7.
    Je n'ai rencontré aucun problème, rien n'est apparu dans VirtualStore, avec ou sans manifeste (manifeste sans privilèges).
    Mais mon compte appartient au groupe administrateur, qui est autorisé à écrire dans ProgramData.
    J'ai regardé les répertoires des autres applications (non WinDev) et certains avaient le droit d'écriture activé pour les autres utilisateurs.

  12. #12
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut Hibernatus,

    Merci de ta collaboration. J'ai réalisé des tests sur 2 ordinateurs en Windows 7. Notamment un petit portable avec un seul compte (cas classique pour les utilisateurs de mes applications).

    A l'installation, aucun problème, les fichiers sont installés dans le "Programdata". Au lancement de l'application, j'utilise la fonction Hcreesiinexistant, toujours aucun problème. Le problème apparait quand je modifie un fichier à partir de l'application. Par exemple, dans une table de données directement liée à un fichier et acceptant la saisie en cascade, dès que j'ajoute une ligne, le fichier est virtualisé.

    Pour information, je suis sans réponse de Pcsoft mis à part que ce n'est effectivement pas normal.

    Lien pour télécharger un projet test : http://www.megaupload.com/?d=F12TQJLK

    Dans le code d'initialisation du projet, j'utilise la fonction "HChangeRep" pour localiser les fichiers de données. En fonction du chemin indiqué, il y a des problèmes ou non.

    Si tu installe l'application et que tu l’exécute, si la fonction HChangeRep est pointée vers programdata, en utilisant le fenêtre 1 et en ajoutant des données, tu devrais constater l'apparition du fichier dans le virtualstore.

  13. #13
    Membre Expert
    Inscrit en
    août 2010
    Messages
    591
    Détails du profil
    Informations forums :
    Inscription : août 2010
    Messages : 591
    Points : 1 125
    Points
    1 125

    Par défaut

    Bonjour,

    N'ayant pas WD16 à la maison je n'ai pas pu tester ce projet.
    Mais le mien faisait exactement pareil : HChangeRep puis une table fichier avec saisie en cascade (le HCréation quant à lui était automatique).
    J'ai aussi testé la création d'un fichier texte.

  14. #14
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut

    Et voilà, nous en sommes toujours au même point, cela devrais fonctionner et cela fonctionne même dans certain cas. Et pourtant, dans mon cas et sur plusieurs ordinateurs cela ne fonctionne pas. Pire, les solutions préconisées par Pcsoft ne solutionne rien et depuis, plus de nouvelles du service technique.

  15. #15
    Membre confirmé
    Homme Profil pro Laurent LEMARCHAND
    Inscrit en
    juin 2010
    Messages
    688
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent LEMARCHAND

    Informations forums :
    Inscription : juin 2010
    Messages : 688
    Points : 233
    Points
    233

    Par défaut

    Au dernières nouvelles, le services technique de Pcsoft n'as d'explication claire et rationnelle à fournir !

    A suivre

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •