¿Existe una carpeta tanto en WinXP como en WinVista en la que todos los usuarios tengan permisos de escritura?

StackOverflow https://stackoverflow.com/questions/81686

  •  09-06-2019
  •  | 
  •  

Pregunta

Tenemos una aplicación NET que se instala en la carpeta Archivos de programa.La aplicación misma escribe algunos archivos y crea algunos directorios en su carpeta de aplicaciones.Pero cuando un usuario normal de Windows intenta utilizar nuestra aplicación, ésta falla porque ese usuario no tiene permiso para escribir en la carpeta de la aplicación.¿Existe alguna carpeta tanto en WinXP como en WinVista en la que todos los usuarios tengan permisos de escritura de forma predeterminada?¿Todas las carpetas de usuarios o algo así?

¿Fue útil?

Solución

No existe tal carpeta.

Pero puedes crear uno.

Hay CSIDL_COMMON_APPDATA que en Vista se asigna a %ProgramData% (c:\ProgramData) y en XP se asigna 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 versiones posteriores.En NT4, puede crear esa carpeta en su directorio de instalación y en Windows 98 y versiones anteriores no importa de todos modos debido a que estos sistemas no tienen un sistema de permisos de todos modos.

Aquí hay un código InnoSetup de muestra 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;

Otros consejos

No estoy seguro de que exista una ruta única en la que todos los usuarios que no sean administradores tengan permiso para escribir.

creo que la correcta seria <User>\Application Data

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top