Ich habe eine c # -Anwendung auf Windows 10 PC. Es gibt Einstellungsdateien im Installationsordner (C: \ Programme (x86) \ xxx), die ich lesen, aber nicht bearbeiten möchte, solange der Benutzer keinen Administratorzugriff hat. Das Problem ist, dass Windows diese Einstellungsdateien in den VirtualStore kopiert und alle Lesevorgänge dorthin umleitet - während die gleiche Anwendung wie der Admin die ursprünglichen Einstellungsdateien im Ordner "Programme" sieht.
Meine Frage: Gibt es eine Möglichkeit, dass die Anwendung die Originaldateien in den Programmdateien sehen kann, auch wenn sie nicht als Administrator ausgeführt werden? Ich möchte sie nur lesen, nicht bearbeiten.
Sie benötigen keine erhöhten Berechtigungen, um die Datei aus dem Ordner Program Files (x86)
zu lesen. Überprüfen Sie, wie Sie die Datei zum Lesen öffnen. Sie sollten im allgemeinen Benutzermodus und im erhöhten Modus ein anderes FileAccess
-Flag angeben. Für den allgemeinen Benutzermodus sollte es mit 'FileAccess.Read' geöffnet werden:
Um festzustellen, ob die Anwendung mit erhöhten Berechtigungen ausgeführt wird, verwenden Sie die Methode IsProcessElevated
. Abhängig vom Ergebnis können Sie den richtigen FileAccess
Modus auswählen.
Die Möglichkeit, Originaldateien in Programmdateien zu sehen, besteht darin, dort nicht zu schreiben (und zu diesem Zweck Dateien zu öffnen, die schreibgeschützt sind, wie Nikita darauf hinweist). Der VirtualStore kann nicht verwendet werden, sondern um Anwendungsprobleme zu beheben. Solche Probleme werden zum Beispiel durch beschädigte Anwendungen verursacht, die für alte Einzelbenutzer-Windows geschrieben wurden, wenn das aktuelle Windows (seit NT) mehrere Sitzungen gleichzeitig von verschiedenen Benutzern haben kann.
Wenn eine Anwendung Datendateien ändern möchte, die von allen Benutzern gemeinsam genutzt werden, sollten sie die Dateien unter Alle Benutzerprofile speichern. Wenn es sich um Benutzerdaten handelt, können die Daten im Anwendungsdatenordner im Benutzerprofil gespeichert werden. In den Anwendungsdaten haben Sie immer noch die Option, wenn Sie möchten, dass die Daten Roaming oder Local sind.
Die Pfade zu diesen Ordnern unterscheiden sich in verschiedenen Windows-Versionen. In Windows Installer sind Eigenschaften für die Pfade festgelegt. Anwendungen haben viele Schnittstellen, die sie verwenden können. Siehe Arbeiten mit bekannten Ordnern in Anwendungen und < a href="https://msdn.microsoft.com/en-us/library/windows/desktop/bb762188(v=vs.85).aspx"> SHGetKnownFolderPath für eine Schnittstelle.
Ansonsten liegt der Zugriff auf die Programmdateien hinter UAC . Sie sollten darauf lesen, um alle Details richtig zu machen.
Tags und Links c# windows-10 virtualstore