tienes tiene puede proporcionar propietario permisos permiso para nuevo mega externo estos establecer esta escritura duro disco destino denegado debera carpeta cambiar atributos administrador acceso windows installation

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;