Frage

Ich versuche, ein Installationsprogramm zu schreiben (durch einen .vdproj erstellen), die sowohl unter Windows Vista und XP funktioniert. Das einzige, was ich zu finden bin, ist, dass, wenn ich versuche, es auf Vista zu laufen, die Dateien, die ich im Installer enthalten sind für die Benutzergruppen mit Read-only Berechtigungen installiert. Dies ist ein Problem, da die Anwendung von diesen Dateien lesen / schreiben muss. Der einzige Weg, ich in der Lage gewesen, um es zu arbeiten, um entweder „Ausführen als Administrator“ oder tatsächlich die Berechtigungen ändern. Weiß jemand, wie man diese Dateien offen zu machen für jeden zu schreiben? Danke.

War es hilfreich?

Lösung

Der Ordner Programm und seinen Inhalt zu lesen sind nur für Standardbenutzer. Das ist von Entwurf, und Sie werden feststellen, dass finden dies der Fall unter Windows XP ist als gut. Es ist das nur auf Windows XP, so viele Menschen mit Administratorrechten laufen die ganze Zeit, dass Sie wegkommen könnten damit. Wenn Sie jemals Ihre Anwendung in einer Geschäftsumgebung verteilen wollen, werden Sie bald feststellen, dass es nicht auf XP wird es funktionieren, auch nicht.

Die Lösung ist NICHT Dateien Platz in dem ausführbaren Ordnern des Programms, wenn Standard-Benutzer Schreibzugriff benötigen. Setzen Sie sie in den Ordner Anwendungsdaten statt. Für die meisten XP-Maschinen werden, dass hier sein:
C: \ Dokumente und Einstellungen \ All Users \ Anwendungsdaten \ Ihre App

Sie jedoch, dass nicht immer der Fall sein wird, und es ist ein wenig anders auf Vista sowieso, so stellen Sie sicher, dass der Pfad durch Ihre Programmierumgebung zur Verfügung gestellt über den Mechanismus erhalten. In .NET können Sie die Environment.GetFolderPath()-Funktion verwenden.

Andere Tipps

Um einige Details zu Joels Antwort hinzufügen:

  • In Win2K und XP, CSIDL_APPDATA sollte für pro Benutzer, Roaming verwendet werden. In Vista ist dies die FOLDERID_RoamingAppData.

  • In Win2K und XP, CSIDL_LOCAL_APPDATA sollte für pro Benutzer, nicht-Roaming verwendet werden. In Vista ist dies FOLDERID_LocalAppData.

  • In Win2K und XP, CSIDL_COMMON_APPDATA sollte für pro-Maschine , das heißt alle Benutzer einer Anwendung verwendet werden. In Vista ist dies FOLDERID_ProgramData.

NB Dieser letzte Ordner ist in der Regel schreibgeschützt Nicht-Admin-nicht-Power-User. Die empfohlene Lösung für dieses Problem ist es, eine Lese / Schreib-Unterordner bei App-Installation zu erstellen.

EDIT: Um die tatsächlichen Positionen dieser Konstanten auf einer bestimmten Maschine unter Verwendung von verwalteten Code zu erhalten, versuchen System.Environment.GetFolderPath mit den Konstanten definiert hier . Eine weitere nützliche Verbindung ist hier .

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