Tengo problemas para editar este archivo en Windows 7:
C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules\FindJNI.cmake
Si lo edito en Cygwin (vi) o TextPad, esos dos programas ven los cambios, por lo que se está escribiendo en el disco en alguna parte . Pero si "escribo" el archivo en un shell de cmd de DOS, parece que el archivo no ha cambiado en absoluto.
Una cosa que noté es que en el shell cmd, el propietario es Administradores, pero en el shell bash de Cygwin, el propietario es Dan:
C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules>dir /Q FindJ*
Volume in drive C is Windows7_OS
Volume Serial Number is 92CA-8707
Directory of C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules
12/30/2011 09:45 AM 1,480 BUILTIN\Administrators FindJasper.cmake
12/30/2011 09:45 AM 7,951 BUILTIN\Administrators FindJava.cmake
12/30/2011 09:45 AM 10,632 BUILTIN\Administrators FindJNI.cmake
12/30/2011 09:45 AM 1,669 BUILTIN\Administrators FindJPEG.cmake
4 File(s) 21,732 bytes
0 Dir(s) 132,524,654,592 bytes free
Dan@home /c/Program Files (x86)/CMake 2.8.7/share/cmake-2.8/Modules
$ ls -al FindJ*
-rwx------+ 1 Dan None 10636 Jan 30 13:57 FindJNI.cmake
-rwx------+ 1 Administrators None 1669 Dec 30 09:45 FindJPEG.cmake
-rwx------+ 1 Administrators None 1480 Dec 30 09:45 FindJasper.cmake
-rwx------+ 1 Administrators None 7951 Dec 30 09:45 FindJava.cmake
¿Cómo puede ser esto? Es como si hubiera dos archivos diferentes con el mismo nombre en el mismo directorio.
Respuestas:
Debido a las características de seguridad introducidas con Windows Vista ( UAC ), cualquier programa que no sea Administrador que intente escribir en ubicaciones protegidas como "Archivos de programa" obtendrá sus escrituras capturadas y redirigidas a una ubicación alternativa "amigable para el usuario".
El programa que creó el archivo podrá ver el archivo, pero la mayoría de los otros programas no.
Wikipedia dice (y he resaltado la sección correspondiente):
Entonces, en teoría, el archivo modificado se está escribiendo en
C:\Users\YourUserName\AppData\Local\VirtualStore\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules
La única forma de evitar esta restricción es desactivar completamente el UAC , lo que no se recomienda por razones de seguridad.
La mejor solución es que debería tener cmake en su camino y estar usando una ubicación no protegida, como en algún lugar dentro de su perfil de usuario.
fuente
Modify
permisos al archivo / directorio que está causando problemas alUsers
grupo de usuarios yendo a la pestaña de seguridad del archivo / carpeta.La carpeta Archivos de programa está protegida por derechos de administrador. En Windows XP y versiones anteriores, la mayoría de las personas corrían como administrador todo el tiempo. Muchos programas asumieron que este era el caso e hicieron todo su trabajo en la carpeta Archivos de programa.
Cuando se lanzó Windows Vista, detuvieron esta práctica, obligando a las aplicaciones a usar en su lugar:
Esto rompió muchas aplicaciones antiguas. Para permitir que una aplicación anterior continúe usando carpetas solo de administrador, Windows creó una tienda virtual para mantener los archivos alterados. Eche un vistazo a:
Encontrarás tus archivos allí. También puede usar el Explorador abriendo la carpeta y presionando el botón Archivos de compatibilidad en la parte superior de la ventana.
fuente
Tuve un problema similar, poco después de pasar a Windows 7 (desde XP) estaba tratando de descomprimir un archivo dentro
C:\Program Files
y me seguía dando un error de acceso denegado.Después de muchas luchas, descubrí que tenía que tomar posesión de toda la carpeta antes de poder cambiar los permisos para permitir el acceso total del grupo de administradores, lo que, en mi opinión, debería tener.
Para tomar posesión de una carpeta: haga clic derecho en la carpeta y vaya a
Properties
, luego haga clic en laSecurity
pestaña, luego haga clicAdvanced
, luego laOwner
pestaña y haga clicEdit
. Marque "Reemplazar propietario en subcontenedores y objetos", luego seleccione el nuevo propietario (por ejemplo, el grupo "Administradores") y luego digaOK
.fuente
Users
grupo permisos de modificación. Sin embargo debe no dará acceso completo a los archivos de programa. El valor predeterminado de que todos sean administradores era una mala elección de diseño e intentaron solucionarlo en Vista.