[C#] Service Windows, impossible d'accéder à app.config depuis le constructeur de mon programme d'installation


Answers

Juste quelques idées sur l'accès aux fichiers de configuration dans un programme d'installation.

Configuration config = ConfigurationManager.OpenExeConfiguration(assemblyPath);
ConnectionStringsSection csSection = config.ConnectionStrings;

Le chemin d'assemblage peut être obtenu de différentes manières: Implémentation de la classe Inside Installer avec:

this.Context.Parameters["assemblypath"].ToString();

ou parfois avec réflexion:

Assembly service = Assembly.GetAssembly(typeof(MyInstaller));
string assemblyPath = service.Location;
Question

Je souhaite stocker les informations de nom d'utilisateur et de mot de passe de mon service Windows «Connexion» en tant qu'utilisateur dans le fichier app.config.

Donc, dans mon installateur, j'essaie de récupérer le nom d'utilisateur / mot de passe de app.config et de définir la propriété, mais une erreur se produit lorsque j'essaie d'installer le service.

Cela fonctionne très bien si je code dur le nom d'utilisateur / mot de passe, et échoue quand j'essaye d'accéder au app.config

public class Blah : Installer
{

    public Blah()
    {

        ServiceProcessInstaller oServiceProcessInstaller = new ServiceProcessInstaller();
                ServiceInstaller oServiceInstaller = new ServiceInstaller();            

                oServiceProcessInstaller.Account = ServiceAccount.User;

        oServiceProcessInstaller.Username =             ConfigurationManager.AppSettings["ServiceProcessUsername"].ToString();

    }
}



Vous ne devriez vraiment pas stocker un mot de passe dans un fichier app.config, c'est très mauvais. Vous devez utiliser le compte de service, l'utilisateur actuel ou les inviter. Un utilisateur peut également cliquer avec le bouton droit sur un fichier .exe (qui est probablement le déclencheur de votre installation) et sélectionner "Exécuter en tant que" pour modifier leurs informations d'identification avant l'installation (dans ce cas, l'utilisateur actuel serait un bon choix).

En outre, dans le gestionnaire de services, un utilisateur peut changer l'utilisateur que le service est censé exécuter après la fin de l'installation. Mais vous ne voulez certainement pas stocker les mots de passe dans les fichiers texte.