Frage

Ich habe eine app (32-Bit-c ++) unter XP laufen, die ich brauche anpassen unter Windows 7 und Vista. Es braucht ein paar Dutzend Bytes Daten irgendwo zu speichern, unabhängig von Benutzer. Unter XP, ich die Daten in der Registry unter HKEY_LOCAL_MACHINE \ Software gespeichert. Wenn ich die Anwendung auf Windows 7 die Registry-Einträge ausgeführt sind virtuelle-ized und jeder Benutzer erhält eine separate Kopie der Daten.

Der nicht-virtuellen-ized Registry scheint wie ein logischer Ort für die Daten, aber ich habe keine Ahnung, wie über das Tun so gehen. Ich stelle fest, dass es eine Vielzahl von Anwendungen, die tatsächlich Daten dort speichern; wie gehen sie dabei vorgehen?

Ich bin auch bereit, die Daten zu speichern, sonst, wo gibt es einige gut kennen globale Repository für sie ist? Eine einzelne kleine Datei ist alles was ich brauche.

Ich bin mehr oder weniger unwissend über die ganze Rechte / Privilegien Geschäft so alle Hinweise, Zeiger, etc. sehr geschätzt.

War es hilfreich?

Lösung

Eines der Entwurfsziele von Windows 7 ist, um Benutzerdaten und Anwendungen zu isolieren. Dies ist auf Privatsphäre, die Sicherheit zu verbessern und die Anpassung. In der Tat können Standardbenutzer in Win 7 nicht Daten von anderen Benutzern geändert werden.

Die Standard Orte Anwendungsdaten zu speichern, wird durch die System.Environment.SpecialFolder Aufzählung. Beachten Sie, dass nicht alle Ordner sind lesbar oder beschreibbar von allen Benutzern. Zum Beispiel ist Common von allen Benutzern lesbar, aber nur beschreibbar durch die mit einer entsprechenden Politik, wie Admins.

Wenn Sie unbedingt Daten haben, die von Benutzern gemeinsam genutzt wird, einen Admin oder einen mit Erlaubnis muss es an einen gemeinsamen Standort installieren. Wenn Benutzer diese Daten aktualisieren müssen, sollten sie es an einen Speicherort kopieren sie, wie Anwendungsdaten schreiben können und ihre eigenen privaten Kopien aktualisieren. Diese private Kopie kann nicht von anderen Benutzern geändert werden. Sie sollten nicht installieren Daten auf gemeinsam genutzte Standorte, wenn Ihre Anwendung nicht anders arbeiten.

In der Tat, in Win7 sollten Sie alle Anwendungen und Daten an den angemeldeten Benutzer der Anwendung und Datenordner installieren, nicht auf gemeinsame Positionen. Wenn mehrere Benutzer die Anwendung zu installieren, wird jeder Benutzer seine eigene Kopie der Anwendung und Daten. Dies ist fast immer das, was Sie wollen. Wenn mehrere Benutzer eine Anwendung oder ein Spiel läuft, wollen Sie nicht ein Benutzer jeder Veränderung anders. Wenn mehrere Benutzer wirklich die gleiche Änderung tun müssen, lassen Sie jeden Benutzer seine private Kopie aktualisieren, wenn sie es brauchen. Wenn ein Benutzer-Account gehackt wird oder schaltet sich das Böse, Sie wollen nicht, es allen anderen Anwendungen und Daten zu zerstören.

Beachten Sie auch, dass in Win7 Benutzer remote zu einer Maschine anmelden können, so ist es keine gute Idee, maschinenspezifische Daten zu speichern, wie Bildschirmauflösungen oder IP-Adressen durch den Benutzer. dies Stattdessen überprüft jedes Mal Ihre Anwendung ausgeführt wird.

Andere Tipps

IMHO, ist es unvernünftig zu glauben, dass viele Menschen haben werden einzelne Benutzer ihre eigenen Kopien eines Softwarepakets installieren. In der Tat werden viele Pakete nicht installiert werden, wenn sie unter ADMIN fertig sind (ALLUSERS = 1). Wenn angemessene Mittel zur Erleichterung systemweit zu einem bestimmten Schutzstufe installieren weniger als ADMIN nicht vorgesehen ist, installiert ADMIN Ebene bleibt die Norm.

Zum Beispiel, warum kann nicht einig Nicht-Admin-Benutzer (mit Zwischen Privilegien) Installiert Registrierungsschlüssel in einem gewissen eingeschränkten Teil der Registrierung (HKLM \ SOFTWARE \ Paket) und Verzeichnisse in All Users \ Anwendungsdaten \ erstellen erlaubt werden verpacken?

Ich habe beschlossen, eine ADMIN mache erforderlich (ALLUSERS = 1) .msi und Registry-Schlüssel mit modifizierten Schutz erstellen.

Also, in einer Situation, wo mein Kunde eine eigene Workstation unserer Anwendung hat (die Daten von einer guten alten INI-Datei stammt, die wir werden r + w) unsere Botschaft an ihren IT-Mitarbeiter ist, dass sie installieren müssen würden es auf der gleichen Maschine für jeden Benutzer sie haben?

Wir müssen Schreib- / Lesezugriffe auf (unter Windows 7 / Vista): Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData) + @ "\ GoScan \ GoScan.ini"

, aber ich mag andere haben die Berechtigungen für einen typischen Benutzer herausgefunden, ist nicht genug, um r + w. Ist es eine „akzeptabel“ Praxis der Verzeichnis / Dateiberechtigungen zu ändern, nachdem das Installationsprogramm oder vielleicht während der Installation (nicht sicher, wo die Setup-Projekt in VS 2008 zu tun) durchgeführt wird.

-Paul

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top