2016-04-28 7 views
0

Ich habe diesen Code, der eine XML-Datei erstellt und speichert, ob ein Kontrollkästchen wahr oder falsch ist. Es wirdC# Serializable Objekt XML-Datei Speicherort

beim Anwendungsstart liest
[Serializable()] 
[XmlRoot("Store", Namespace = "")] 
public class Credentials 
{ 
    public Credentials() { } 

    public bool checkBox1State { get; set; } 


    public static Credentials ReadCredentials() 
    { 
     XmlSerializer reader = new XmlSerializer(typeof(Credentials)); 
     System.IO.StreamReader file = new System.IO.StreamReader("Credentials.xml"); 
     Credentials data = new Credentials(); 
     data = (Credentials)reader.Deserialize(file); 
     file.Close(); 
     return data; 
    } 

    public static void WriteCredentials(Credentials data) 
    { 
     XmlSerializer writer = new XmlSerializer(typeof(Credentials)); 
     System.IO.StreamWriter file = new System.IO.StreamWriter("Credentials.xml"); 
     writer.Serialize(file, data); 
     file.Close(); 
    } 
} 

Mein Programm liest und perfekt aus der XML-Datei schreibt. Ich habe jedoch festgestellt, dass dies im Stammverzeichnis gespeichert ist, von dem die EXE gestartet wurde. In der Regel wird dies in den Programmdateien enthalten sein, für die erhöhte Berechtigungen zum Schreiben erforderlich sind.

Als solche möchte ich diese Datei im AppData-Ordner des Benutzers speichern. Welche Änderungen sind an meinem Code erforderlich, um dies zu ermöglichen?

Dank

Antwort

1

Sie müssen den Pfad zu dem Verzeichnis AppData des aktuellen Benutzers lösen. Entweder mit dem Special Enum

string fileName = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), "Credentials.xml") 

oder durch die Umwelt Erweiterung Variable

string fileName = Environment.ExpandEnvironmentVariables(@"%AppData%\Credentials.xml"); 

und verwenden Sie es anstelle des Dateinamens realtive

System.IO.StreamReader file = new System.IO.StreamReader(fileName); 
+0

Danke, es funktioniert super. Weiß nicht wie ich das übersehen habe – nerdalert

Verwandte Themen