J'ai du mal à modifier ce fichier sous Windows 7:
C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules\FindJNI.cmake
Si je le modifie dans Cygwin (vi) ou TextPad, ces deux programmes voient les changements, donc il est écrit quelque part sur le disque . Mais si je "tape" le fichier dans un shell cmd DOS, il semble que le fichier n'a pas été modifié du tout.
Une chose que j'ai remarquée est que dans le shell cmd, le propriétaire est Administrateurs, mais dans le shell bash de Cygwin, le propriétaire est 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
Comment se peut-il? C'est comme s'il y avait deux fichiers différents portant le même nom dans le même répertoire.
Réponses:
En raison des fonctionnalités de sécurité introduites avec Windows Vista ( UAC ), tout programme non administrateur qui essaie d'écrire dans des emplacements protégés tels que «Program Files» verra ses écritures interceptées et redirigées vers un autre emplacement «convivial».
Le programme qui a créé le fichier pourra voir le fichier, mais la plupart des autres programmes ne le verront pas.
Wikipédia déclare (et j'ai mis en évidence la section pertinente):
Donc, en théorie, votre fichier modifié est en fait écrit dans
C:\Users\YourUserName\AppData\Local\VirtualStore\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules
Le seul moyen de contourner cette restriction est de désactiver complètement l' UAC , ce qui n'est pas recommandé pour des raisons de sécurité.
La meilleure solution est que cmake devrait en fait se trouver sur votre chemin et utiliser un emplacement non protégé tel que quelque part dans votre profil utilisateur.
la source
Modify
autorisations auUsers
groupe d'utilisateurs en allant dans l'onglet sécurité du fichier / dossier.Le dossier Program Files est protégé par des droits d'administrateur. Sous Windows XP et versions antérieures, la plupart des utilisateurs s'exécutaient en permanence en tant qu'administrateur. De nombreux programmes ont supposé que c'était le cas et ont fait tout leur travail dans le dossier Program Files.
Lorsque Windows Vista a été publié, ils ont arrêté cette pratique, forçant les applications à utiliser à la place:
Cela a cassé beaucoup d'applications plus anciennes. Pour permettre aux anciennes applications de continuer à utiliser uniquement les dossiers Administrateur, Windows a créé un magasin virtuel pour conserver les fichiers modifiés. Consultez:
Vous y trouverez vos fichiers. Vous pouvez également utiliser l'Explorateur en ouvrant le dossier et en appuyant sur le bouton Fichiers de compatibilité en haut de la fenêtre.
la source
J'ai eu un problème similaire, peu de temps après le passage à Windows 7 (à partir de XP), j'essayais de décompresser un fichier à l'intérieur
C:\Program Files
et cela me donnait toujours une erreur d'accès refusé.Après beaucoup de lutte, j'ai constaté que je devais prendre possession de l'intégralité du dossier avant de pouvoir modifier les autorisations pour autoriser le groupe Administrateurs à un accès complet - ce qui, à mon avis, devrait à juste titre.
Pour vous approprier un dossier: faites un clic droit sur le dossier et allez dans
Properties
, puis cliquez sur l'Security
onglet, puis cliquez surAdvanced
, puis sur l'Owner
onglet, et cliquez surEdit
. Cochez "Remplacer le propriétaire des sous-conteneurs et des objets", puis sélectionnez le nouveau propriétaire (par exemple, le groupe "Administrateurs"), puis ditesOK
.la source
Users
groupe des autorisations de modification. Cependant, vous ne devriez pas avoir un accès complet aux fichiers du programme. La valeur par défaut de tous les administrateurs est un mauvais choix de conception et ils ont tenté de le corriger dans Vista.