2009-09-23 1 views
5

Ich schreibe einen Windows-Dienst, der einige Daten über Neustarts/Neustarts des Dienstes erhalten muss. Derzeit schreibe ich die Dateien in einem Verzeichnis, das von Application.UserAppDataPath zurückgegeben wird, aber das scheint mir keine einheitliche Antwort zu geben. Wie soll ich den richtigen Ort zum Schreiben der Daten bestimmen?Wo auf dem Dateisystem sollte ein Windows-Dienst seine Daten beibehalten?

+0

Jeder Dienst mit einigen Benutzer-Privilegien ausgeführt nutzen könnten. Sollten die Daten nicht in den applicationData des Benutzers gespeichert werden (ich nehme an, Sie bezeichnen dies als Application.UserAppDataPath)? Was ist das Problem mit diesem Ort? –

+0

Der Dienst läuft als LocalSystem. Das LocalSystem-Konto hat jedoch nicht sein eigenes Verzeichnis in "Dokumente und Einstellungen"; In meinen Tests verwendet es das LocalService-Verzeichnis, aber wir erhalten Berichte, dass der Dienst Daten manchmal an einem Ort speichert und dann in einem anderen sucht. In der Registrierung scheint der AppData-Pfad von LocalSystem% USERPROFILE% \ Application Data zu sein, daher scheint% USERPROFILE% keine konsistente Antwort zu geben. –

Antwort

4

Es hängt davon ab, ob Ihr Dienst mit dem Systemkonto oder mit einem bestimmten Benutzerkonto ausgeführt wird.

  • -System Konto. Speichern Sie die Dateien im Ordner CommonApplicationData:

    Zeichenfolge pathForSystem = Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData);

  • Benutzer Konto. Speichern Sie die Dateien in dem ApplicationData-Ordner:

    string pathForUser = Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData);

4

Wenn Sie möchten, dass es konsistent ist (d. H. Benutzerunabhängig), versuchen Sie es mit Application.CommonAppDataPath.

+0

Ich stimme zu. Wenn der Dienst als LocalSystem ausgeführt wird, ist es sinnvoll, Daten im benutzerunabhängigen Datenpfad zu speichern. –

+1

Der Application.CommonAppDataPath ist in System.Windows.Forms.dll enthalten. Brauche ich wirklich Referenz Winforms von Windows Service? – qub1n

Verwandte Themen