2009-11-28 4 views
2

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.

Répondre

1

Généralement, lorsque vous avez besoin des modes UAC protégés et non protégés, procédez comme suit.

  1. Créer deux exécutables (l'un devrait être le principal et ne pas nécessiter de privilèges pour une opération, le second devrait être en mesure d'effectuer des opérations de privilèges).
  2. Démarrer le premier (principal) en utilisant des privilèges limités.
  3. Lorsque vous devez effectuer une opération privilégiée, créez un nouveau processus avec des droits d'administration (affichez la fenêtre UAC) et démarrez la deuxième application.
  4. Une fois terminé avec la deuxième application, fermez-le et vous reviendrez en mode limité.

Voici comment VMWare Workstation fonctionne lorsque vous modifiez les paramètres globaux. Modifier: Modifier les autorisations sur un dossier n'est pas une bonne approche. Est juste un hack sale parce que n'importe qui peut écrire dans ce dossier et cela va simplement invalider le rôle de l'UAC - après tout c'est le rôle de l'UAC: pour empêcher les changements non privilégiés dans les dossiers spéciaux.

+1

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

+0

A accepté ceci comme la bonne réponse je suppose même si ce n'est pas la réponse que je voulais :) – jcoder

2

Essayez de modifier les paramètres de sécurité de répertoire de votre application lors de l'installation pour autoriser les utilisateurs en écriture "Autorisés".

+0

Et cela fonctionnera? C'était vraiment ma question, est "contournant" UAC pour un répertoire aussi simple que de changer les autorisations sur ce répertoire? – jcoder

+0

Oui, l'ajout de l'autorisation d'écriture sur "Utilisateurs authentifiés" devrait fonctionner, au moins cela a fonctionné pour moi. – DxCK

+0

Merci, ça me donne des options. Je me sens mal à l'aise de changer les permissions même si je vais seulement les changer pour ce qu'elles seraient si le dossier était dans le bon emplacement. – jcoder

Questions connexes