2010-03-16 5 views
1

Je crée une application Windows qui se met automatiquement à jour. Je n'utilise pas ClickOnce pour diverses raisons. Lorsque je tente de File.Move() mes fichiers mis à jour C: \ Program Files sur Windows 7, je reçois l'erreur suivante:Comment copier de nouveaux binaires dans C: Program Files?

L'accès au chemin « C: \ Program Files \ <entreprise> \ <app> \ <app.exe> 'est refusée.

Je ne reçois pas d'invite UAC. L'exe que j'essaie de mettre à jour n'est pas en cours d'exécution.

+0

Comment l'application a-t-elle été initialement installée? Quel compte exécute le programme lors de la tentative de mise à jour (un compte admin ou non-administrateur)? –

+0

L'application a été initialement installée en utilisant un MSI, ce qui donne l'invite UAC correcte. J'ai essayé d'exécuter l'application avec le compte d'administrateur (mais pas "Exécuter en tant qu'administrateur"), et il se lance sans élever une invite UAC. "Run As Admin" le fait fonctionner, mais je ne veux pas que mes utilisateurs le fassent. –

Répondre

1

Votre problème est UAC, même si vous n'obtenez pas une invite UAC.

Vous devez modifier le manifeste de votre programme pour l'élever automatiquement. (Cela vous donnera une invite UAC)

+0

Pourquoi était-ce downvoted? – SLaks

+0

Vous devriez seulement exécuter en tant qu'administrateur s'il y a réellement une mise à jour à appliquer. – SLaks

+0

J'ai créé un autre exe avec le manifeste approprié. Lorsque j'ai une nouvelle mise à jour à installer, j'appelle l'autre exe pour copier les fichiers. L'invite UAC n'apparaît donc que lorsque cela est nécessaire. Merci. –

1

Vous ne pouvez pas apporter de modifications dans le dossier d'installation du programme, vous n'avez pas les privilèges d'administrateur requis. L'ajout d'un manifeste à votre updater n'est pas pratique, l'utilisateur va vite se lasser de voir l'invite d'élévation.

La seule façon pratique consiste à exécuter votre programme de mise à jour en tant que tâche planifiée. Ces tâches peuvent être exécutées avec des privilèges d'administrateur car elles nécessitent des privilèges d'administrateur pour en planifier un. Ce que vous devrez faire avec votre installateur.

Questions connexes