Wie Sie verhindern, dass Datei-Umleitung von Programm-Daten VirtualStore\ProgramData
Verwende ich C# mit .net 2.0
Rette ich mein Programm Daten in eine Datei unter: C:\Program Data\MyProgramName\fileName.xml
Nach der Installation und dem Betrieb meiner Anwendung eine Zeit, die ich es deinstalliert (bei der deinstallation bin ich entfernen Sie alle Dateien aus "program data") und dann habe ich die Anwendung installieren, und es lief.
Den seltsamen thig ist, dass meine Anwendung gestartet wird, als wenn die Dateien im Programm-Daten-Bestand - heißt, ich hatte die alten Daten in meiner app, obwohl die Daten die Datei wurde gelöscht.
Beim laufen:
Datei.Exists("C:\Program Data\MyProgramName\fileName.xml")
Habe ich "wahr", obwohl ich wusste genau, dass die Datei nicht vorhanden ist.
Die Sache wurde fremder, bei mir lief die Anwendung als admin und dann wird die Datei gar nicht existiert.
Nach einer recherche, fand ich heraus, dass beim laufen meine Anwendung ohne admin-Privilegien statt:
"C:\Program Data\MyProgramName\fileName.xml" ich bekomme
"C:\Users\userName\AppData\Local\VirtualStore\ProgramData\MyProgramName\fileName.xml"
und in der Tat gab es eine Datei, die bereits von der vorherigen installation (die ich natürlich nicht löschen ,weil ich nicht wusste, es gab). also einfach mich führen, wie könnte ich das verhindern, wenn apps laufen ohne admin-Rechte. ich will nicht für jede Datei automatisch in den VirtualStore-Ordner. bitte besprechen Sie alle mögliche Weise, dies zu stoppen. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, Fragen Sie sich, dies zu tun, müssen Global für alle Benutzer gespeichert?
Wenn es nicht so sein, speichern Sie die Datei in der Anwendung die Daten stattdessen können Sie den Pfad mit
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
es sollte immer zuverlässig zu erweitern, umC:\Users\Username\AppData\Roaming\
. Bitte beachten Sie, dass dieser Pfad ist für jeden Benutzer eindeutig obwohl.Wenn Sie müssen, sind Sie aus Glück heraus. Es gibt keine zuverlässige Möglichkeit zum speichern von Anwendungsdaten für alle Benutzer ohne admin-Rechte (oder Benutzerkontensteuerung) auf jedem Windows-post-XP ist das nicht extrem hacky, wie die Speicherung Ihrer Daten in die Public-Benutzer (die möglicherweise oder möglicherweise nicht möglich sein, kann ich nicht überprüfen, gerade jetzt).
Fand ich eine Arbeit um für dieses Problem bei der übertragung von einem sehr alten win32-Anwendungen für windows 7 & 10. Das Programm schrieb, um eine Datenbank auf C:\Program Dateien..., aber das OS automatisch geändert der Pfad zum virtuellen Speicher. Aber die Datenbank war erforderlich weltweit. Durch die änderung compatablilty-Modus auf Windows 95 oder XP SP2 und immer als administrator ausgeführt werden, wurde die Datenbank direkt gearbeitet in C:\Program Dateien\etc.
Gibt es Auswirkungen auf die Sicherheit für diese und die box wurde entfernt, in alle Netze und Adapter deaktiviert usw.