Windows-Dienst keinen Zugriff auf die app.config von meinem Installer Konstruktor
Ich soll zum speichern von Benutzername/Passwort-Informationen von meinem windows-Dienst "Anmeldung als" Benutzer in der app.config.
Also in meinem Installer, ich bin versucht zu greifen, die Benutzername/Passwort von der app.config und setzen Sie die Eigenschaft, aber ich erhalte eine Fehlermeldung, wenn Sie versuchen, um den Dienst zu installieren.
Es funktioniert gut, wenn ich hart code, Benutzername/Kennwort, und scheitert, wenn ich versuche die app zugreifen.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();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, wenn das Installationsprogramm ausgeführt wird, werden Sie noch in der Installationsphase und Ihre Anwendung wurde nicht vollständig installiert. Die app.Konfig ist nur dann verfügbar, wenn die eigentliche Anwendung ausgeführt wird.
Können Sie jedoch Folgendes tun:
Nur einige Ideen für den Zugriff auf die config-Dateien in einen installer.
Montage Pfad geholt werden können gibt es mehrere Möglichkeiten:
Innerhalb Installer-Klasse Umsetzung mit:
manchmal mit Reflexion:
Ich hatte das gleiche problem mit einem service-installer. Sie müssen rufen Sie Ihren config-Datei "myService.exe.config" und verwenden Sie die OpenExeConfiguration Methode mit der Montage Weg, sich für die richtige config-Datei (wie Sie es erklärt ist, ist die erste Antwort, wenn Sie Ihre Installateure ausführen, die Basis-Verzeichnis ist das Verzeichnis der installUtil und nicht den installer)
Wenn Sie nicht möchten, Folgen Sie den "myService.exe.config" - format, verwenden Sie ein exeConfigurationFileMap:
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; using System.Linq; using System.Configuration; using System.ServiceProcess; using System.Reflection; using System.IO;
Sollten Sie wirklich nicht zum speichern eines Kennworts in einer app.config-Datei, das ist sehr schlecht. Sie müssen verwenden Sie entweder die service-Konto, den aktuellen Benutzer oder auffordern. Auch ein Benutzer mit der rechten klicken Sie auf eine .exe (die vermutlich ist, was die Auslösung der Installation), und wählen Sie "ausführen als" Ihre Zugangsdaten ändern, bevor Sie die installation (in dem Fall aktuelle Benutzer wäre eine gute Auswahl).
Zusätzlich in der Dienste-manager kann ein Benutzer ändern, an welchen Benutzer der service laufen soll, wie nach der installation ist vorbei. Aber Sie definitiv nicht wollen, um die Speicherung der Passwörter im plain-text-Dateien.