So verhindern Sie die Dateiumleitung von Programmdaten zu VirtualStore \ ProgramData

8

Ich verwende C # mit .net 2.0

Ich speichere meine Programmdaten in einer Datei unter: C:\Program Data\MyProgramName\fileName.xml

Nachdem ich meine Anwendung einmal installiert und ausgeführt habe, habe ich sie deinstalliert (während der Deinstallation entferne ich alle Dateien von "Programmdaten") und dann installiere ich die Anwendung neu und starte sie.

Das seltsame ist, dass meine Anwendung so gestartet wurde, als ob die Dateien in Programmdaten existierten - das heißt, ich hatte alte Daten in meiner App, obwohl die Datendatei gelöscht wurde.

Beim Ausführen:

  

Datei.Exists ("C: \ Programme \ MeinProgrammname \ Dateiname.xml")

Ich habe "wahr", obwohl ich sicher wusste, dass die Datei nicht existiert.

Das Ding wurde seltsamer, als ich die Anwendung als Admin ausführte und dann die Datei nicht existierte.

Nach einer Nachforschung habe ich herausgefunden, dass wenn ich meine Anwendung ohne Admin-Privilegien ausführe, anstatt zu bekommen:

  

"C: \ Programmdaten \ MeinProgrammname \ Dateiname.xml" Ich verstehe   "C: \ Benutzer \ Benutzername \ AppData \ Local \ VirtualStore \ ProgramData \ MyProgramName \ Dateiname.xml"

und tatsächlich gab es eine Datei, die von der vorherigen Installation existierte (die ich offensichtlich nicht gelöscht hatte, weil ich nicht wusste, dass sie existierte). Also führe mich einfach, wie ich das stoppen könnte, wenn Apps ohne Administratorrechte laufen. Ich möchte keine Datei automatisch im VirtualStore-Ordner erstellen. Bitte besprechen Sie alle möglichen Wege, dies zu stoppen. Danke

    
Thomas 05.08.2013, 13:11
quelle

2 Antworten

4

Stellen Sie sich zunächst einmal die Frage, ob dies für alle Benutzer global gespeichert werden muss.

Wenn dies nicht der Fall sein muss, speichern Sie die Datei stattdessen in den Anwendungsdaten. Sie können den Pfad mit Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) abrufen, er sollte immer zuverlässig auf C:\Users\Username\AppData\Roaming\ erweitert werden. Beachten Sie, dass dieser Pfad jedoch für jeden Benutzer eindeutig ist.

Wenn Sie müssen, haben Sie kein Glück. Es gibt keine zuverlässige Möglichkeit, Anwendungsdaten für alle Benutzer ohne Administratorrechte (oder UAC) auf jedem Windows-Post-XP zu speichern, die nicht extrem hacky sind, wie das Speichern Ihrer Daten im öffentlichen Benutzer (was möglich oder nicht möglich ist). t check jetzt).

    
Chloride Cull 05.08.2013, 13:24
quelle
-1

Ich habe eine Lösung für dieses Problem gefunden, als ich eine sehr alte Win32-App auf Windows 7 & amp; 10. Das Programm hat an eine Datenbank in C: \ Programme ... geschrieben, aber das Betriebssystem hat den Pfad zum virtuellen Speicher automatisch geändert. Die Datenbank wurde jedoch global benötigt. Durch Ändern des Kompatibilitätsmodus auf Windows 95 oder XP SP2 und immer als Administrator ausgeführt wurde die Datenbank direkt in C: \ Programme \ etc.

bearbeitet

Dies hat Auswirkungen auf die Sicherheit, und die Box wurde aus allen Netzwerken und Adaptern entfernt usw. deaktiviert.

    
Cynapse 04.08.2016 16:31
quelle

Tags und Links