2008-09-17 2 views
1

Wir haben eine NET-App, die im Ordner Programme installiert wird. Die App selbst schreibt einige Dateien und erstellt einige Verzeichnisse in ihrem App-Ordner. Aber wenn ein normaler Windows-Benutzer versucht, unsere Anwendung zu verwenden, stürzt er ab, weil dieser Benutzer keine Berechtigung zum Schreiben in den App-Ordner hat. Gibt es einen Ordner in WinXP und WinVista, auf den standardmäßig alle Benutzer Schreibberechtigungen haben? Alles Benutzerordner oder etwas ähnliches?Gibt es in WinXP und WinVista einen Ordner, für den alle Benutzer Schreibberechtigungen haben?

Antwort

2

Es gibt keine solche Ordner sein würde.

Aber Sie können einen erstellen.

Es gibt CSIDL_COMMON_APPDATA, die in Vista Karten% Programdata% (c: \ Programdata) und in XP abbildet c: \ Dokumente und Einstellungen \ AllUsers \ Anwendungsdaten

Fühlen Sie sich frei einen Ordner dort zu schaffen in Ihrem Installer und legen Sie die ACL so fest, dass jeder in diesen Ordner schreiben kann.

Beachten Sie, dass COMMON_APPDATA in Version 5 der Common Controls-Bibliothek implementiert wurde, was bedeutet, dass es in Windows 2000 und höher verfügbar ist. In NT4 können Sie diesen Ordner in Ihrem Installationsverzeichnis und in Windows 98 und darunter erstellen, da diese Systeme sowieso kein Berechtigungssystem haben. Hier

einige Beispiele InnoSetup Code erstellen Sie diesen Ordner:

[Dirs] 
Name: {code:getDBPath}; Flags: uninsalwaysuninstall; Permissions: authusers-modify 

[Code] 


function getDBPath(Param: String): String; 
var 
    Version: TWindowsVersion; 
begin 
    Result := ExpandConstant('{app}\data'); 
    GetWindowsVersionEx(Version); 
    if (Version.Major >= 5) then begin 
    Result := ExpandConstant('{commonappdata}\myprog'); 
    end; 
end; 
+0

fantastisch, das war genau das, was ich suchte. –

0

Ich bin nicht sicher, dass es einen einzigen Pfad gibt, auf den alle Nicht-Administrator-Benutzer Schreibberechtigung haben.

ich glaube, die richtige <User>\Application Data