windows - puede - no tiene permiso de escritura en esta carpeta local
¿Hay una carpeta en WinXP y WinVista a la que todos los usuarios tienen permisos de escritura? (2)
No estoy seguro de que haya una sola ruta a la que todos los usuarios no administradores tengan permiso para escribir.
Creo que el correcto sería <User>/Application Data
Tenemos una aplicación NET que se instala en la carpeta Archivos de programa. La aplicación en sí escribe algunos archivos y crea algunos directorios en su carpeta de aplicaciones. Pero cuando un usuario normal de Windows intenta usar nuestra aplicación, se bloquea porque ese usuario no tiene permiso para escribir en la carpeta de la aplicación. ¿Hay alguna carpeta en WinXP y WinVista a la que todos los usuarios tengan permisos de escritura de forma predeterminada? ¿Toda la carpeta de usuario o algo así?
No hay tal carpeta.
Pero puedes crear uno.
Hay CSIDL_COMMON_APPDATA que en Vista asigna a% ProgramData% (c: / ProgramData) y en los mapas de XP a c: / Documents and Settings / AllUsers / Application Data
Siéntase libre de crear una carpeta allí en su instalador y configurar la ACL para que todos puedan escribir en esa carpeta.
Tenga en cuenta que COMMON_APPDATA se implementó en la Versión 5 de la biblioteca de controles comunes, lo que significa que está disponible en Windows 2000 y posterior. En NT4, puede crear esa carpeta en su directorio de instalación y en Windows 98 y abajo no importa de todos modos debido a que estos sistemas no tienen un sistema de permisos de todos modos.
Aquí hay algunos ejemplos de código de InnoSetup para crear esa carpeta:
[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;