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?
Antwort
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);
Wenn Sie möchten, dass es konsistent ist (d. H. Benutzerunabhängig), versuchen Sie es mit Application.CommonAppDataPath
.
Ich stimme zu. Wenn der Dienst als LocalSystem ausgeführt wird, ist es sinnvoll, Daten im benutzerunabhängigen Datenpfad zu speichern. –
Der Application.CommonAppDataPath ist in System.Windows.Forms.dll enthalten. Brauche ich wirklich Referenz Winforms von Windows Service? – qub1n
Wenn dies ein .NET-Service ist glaube ich Sie IsolatedStorage
- 1. Wo sollte ein Visual Studio Add-in seine Einstellungen speichern?
- 2. Wo sollte ich ein auf dem iPhone ausgewähltes Bild speichern?
- 3. Wo speichert Native's AsyncStorage seine Daten?
- 4. Wo würde NSKeyedArchiver normalerweise die Daten auf dem iPhone speichern?
- 5. Wo speichert Firefox seine ETag-Daten?
- 6. Wo sollte mein Win32-Programm seine Dateien behalten?
- 7. Wo sollte ein kanonischer Domainname durchgesetzt werden?
- 8. Sollte ich diese Anwendungsdaten beibehalten?
- 9. Sichere Daten auf dem Server
- 10. Kann Javascript auf ein Dateisystem zugreifen?
- 11. Wo wird/etc auf dem Hostsystem unter MSYS zugeordnet?
- 12. Erstellen eines "mountable" Dateisystem, wo zu starten?
- 13. Wo speichert Airbnb seine Plätze?
- 14. Ändern von Daten auf Festplatte geschrieben durch Ext4 Dateisystem
- 15. entfernen Knoten in einem Baum nicht seine Ebene beibehalten
- 16. wo genau PIG seine Beziehungen speichert
- 17. Wo sollte ich Datenbankdateien speichern?
- 18. Was ist ein virtuelles Dateisystem oder ein Dateisystem im Benutzerbereich?
- 19. Klicken auf ein Element ändert seine Position
- 20. Daten zwischen Anwendungsausführungen beibehalten
- 21. Syntaxfehler auf Increment obwohl sollte es richtig seine
- 22. GridView-Daten in Multiview beibehalten
- 23. Wie sollte ein Gnome-Applet seine Konfigurationsdaten speichern?
- 24. Dateisystem: Überschreiben von Daten gleicher Länge
- 25. Wo sollte ich Daten auf einem VMWare Server (oder einer virtuellen Maschine) installieren?
- 26. Sollte ich JDBC-Verbindung beibehalten oder nicht?
- 27. Wo legt node.js seine Dateien ab?
- 28. Loader auf Fragmenten auf dem BackStack nicht beibehalten
- 29. Wo sollte ich Daten für eine C# -Anwendung speichern?
- 30. lesen Daten beibehalten, wenn ein Feld in DRF
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? –
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. –