2008-09-17 5 views
1

Nous avons une application NET qui est installée dans le dossier Program Files. L'application elle-même écrit des fichiers et crée des répertoires dans son dossier d'application. Mais lorsqu'un utilisateur Windows normal essaie d'utiliser notre application, il se bloque parce que cet utilisateur n'a pas l'autorisation d'écrire dans le dossier de l'application. Existe-t-il un dossier dans WinXP et WinVista auquel tous les utilisateurs ont des droits d'écriture par défaut? Tout dossier utilisateur ou quelque chose comme ça?Existe-t-il un dossier dans WinXP et WinVista auquel tous les utilisateurs ont des droits d'écriture?

Répondre

2

Il n'y a pas le dossier.

Mais vous pouvez en créer un.

Il est CSIDL_COMMON_APPDATA qui cartes Vista à% ProgramData% (c: \ ProgramData) et XP cartes pour c: \ Documents and Settings \ AllUsers \ Application Data

Ne hésitez pas à créer un dossier là-bas dans votre installer et définir la liste de contrôle d'accès afin que tout le monde peut écrire dans ce dossier. Gardez à l'esprit que COMMON_APPDATA a été implémenté dans la version 5 de la bibliothèque Common Controls, ce qui signifie qu'il est disponible dans Windows 2000 et versions ultérieures. Dans NT4, vous pouvez créer ce dossier dans votre répertoire d'installation et dans Windows 98 et ci-dessous, cela n'a pas d'importance car ces systèmes n'ont pas de système d'autorisation de toute façon.

Voici quelques exemples de code InnoSetup pour créer ce dossier:

[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

fantastique, c'était exactement ce que je cherchais. –

0

Je ne suis pas sûr qu'il existe un seul chemin auquel tous les utilisateurs non administrateurs ont l'autorisation d'écrire.

Je pense que le bon serait <User>\Application Data

Questions connexes