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
Partager