Je ne comprends pas vraiment les fenêtres ... CCUComprendre le contrôle de compte Windows Vista/7
j'ai besoin pour mon programme pour être en mesure de mettre à jour et ajouter des fichiers dans un répertoire spécifique appartenant à un programme. Ce répertoire peut être un sous-répertoire d'une application dans Program Files, par exemple c: \ Program Files \ MyApp \ Data ou il peut être installé ailleurs.
Je crois que si c'est sous Program Files alors mon programme sera empêché d'écrire là sauf s'il fonctionne en tant qu'administrateur ET a élevé ses droits d'accès. Est-ce exact?
Je dois être en mesure de mettre à jour les fichiers dans ce répertoire de préférence sans invoquer des privilèges élevés et avec l'application principale encore "protégée", juste autoriser l'accès à ce répertoire. Je ne peux pas déplacer le dossier Data ailleurs car il s'agit d'une application tierce avec laquelle je dois m'interfacer.
Comment est-il déterminé que l'UAC est nécessaire pour les dossiers dans les fichiers de programme? Est-ce que Program Files est spécial ou est juste des permissions? Si je devais ajuster les autorisations sur ce sous-répertoire Data pour que le compte d'utilisateur exécutant le programme ait un accès en écriture, cela permettrait-il à mon application de mettre à jour les fichiers dans ce répertoire sans privilèges spéciaux?
Ou y a-t-il un meilleur moyen d'y parvenir auquel je ne pense pas? Mon programme de mise à jour doit être en Java, donc obtenir des privilèges élevés est une douleur. J'imagine que je vais devoir écrire un wrapper C++ pour exécuter la machine virtuelle Java afin que je puisse donner à ce wrapper un manifeste approprié. Pas impossible mais je ne veux pas vraiment avoir à faire ça.
Je ne me sens pas dans ce cas, c'est un hack sale en particulier.L'application doit avoir été conçue pour placer le répertoire Data dans la zone des documents de l'utilisateur, et non dans ses propres fichiers de programme. En lui accordant un accès en écriture, je ne donne aucune permission qu'un design * good * n'aurait pas donné. Ce n'est pas une bonne chose à encourager ... Du moins c'est ce que je comprends. Le problème que j'ai avec 2 exécutables est que ce programme doit être en Java donc ce n'est pas une chose simple à faire. Les points sont bons mais donc +1, pas tout à fait sûr que je peux facilement le faire – jcoder
A accepté ceci comme la bonne réponse je suppose même si ce n'est pas la réponse que je voulais :) – jcoder