2012-06-25 2 views
2

Peut-être que cela n'est pas possible en raison d'implications de sécurité ... J'ai un package de déploiement créé dans Visual Studio pour un formulaire Win. L'application fait référence localement à un fichier app.config et permet à l'utilisateur de modifier les paramètres à l'aide de l'application. Lorsque je déploie l'application et tente d'enregistrer les modifications que j'ai effectuées, Windows dit "Autorisation refusée". Y at-il une commande que je peux exécuter dans le cadre de l'installation qui donnera l'autorisation de sécurité "Tout le monde" à mon fichier app.config ... et permettra donc à mon Application de l'éditer?Package de déploiement Visual Studio Modifier les autorisations de fichier

Merci.

+0

où est votre application Fichier .config situé dans le même répertoire que l'exécutable? – BryanJ

+0

Oui, il se trouve dans le même dossier que l'exécutable. – Adrian

Répondre

2

Si vous voulez être en mesure d'écrire dans le fichier app.config vous devez le déplacer dans le répertoire Shared Application Data et modifier votre application pour lire les informations de configuration à partir de là. Sur Win7 par exemple:

C: \ ProgramData \ VotreEntreprise \ YourApp \ app.config

En C#, pour obtenir le répertoire commun des données d'application:

// using System.IO; 
string appDataDir = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 
+0

Merci. Cela a bien fait le travail :) – Adrian

1

Vous pourriez être en mesure d'utiliser une action personnalisée dans votre programme d'installation, icacls pour donner accès à tout le monde:

icacls {Path to App.config} /grant Everyone:(F)

+0

Donc je devrais ajouter une classe, ajouter ce code, puis ajouter cette sortie comme une action personnalisée dans le programme d'installation? Existe-t-il un moyen de simplement exécuter la commande sans coder la classe, dans le cadre de l'installation? – Adrian

+0

À droite, vous pouvez regarder [ici] (http://support.microsoft.com/KB/827018) si vous avez besoin d'un exemple. Votre classe aurait une ligne de code, mais je ne sais pas si l'ajout d'un ensemble d'installation à votre solution va être un gros problème ou non. Je suis sûr que vous pouvez exécuter icacls directement à partir d'une action personnalisée, mais seulement à partir d'une solution d'installation plus avancée comme InstallShield. – ScottieMc

Questions connexes