У меня проблемы с редактированием этого файла в Windows 7:
C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules\FindJNI.cmake
Если бы я изменить его в Cygwin (VI) или TextPad, эти две программы увидеть изменения, поэтому она становится записаны на диск где - то . Но если я «наберу» файл в оболочке DOS cmd, похоже, что файл вообще не был изменен.
Одна вещь, которую я заметил, заключается в том, что в оболочке cmd владелец - это Администраторы, а в оболочке Cygwin - владелец 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
Как это может быть? Это как два разных файла с одинаковыми именами в одном каталоге.
Ответы:
Благодаря функциям безопасности, представленным в Windows Vista ( UAC ), любая программа без прав администратора, которая пытается записывать в защищенные места, такие как «Program Files», будет перехватывать свои записи и перенаправлять их в альтернативное «удобное» место.
Программа, которая создала файл, сможет увидеть файл, но большинство других программ не смогут.
Википедия утверждает (и я выделил соответствующий раздел):
Таким образом, в теории ваш измененный файл фактически записывается в
C:\Users\YourUserName\AppData\Local\VirtualStore\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules
Единственный способ обойти это ограничение - полностью отключить UAC , что не рекомендуется по соображениям безопасности.
Лучшее решение заключается в том, чтобы на вашем пути был cmake, и вы должны использовать незащищенное местоположение, например, где-то внутри вашего профиля пользователя.
источник
Modify
разрешения дляUsers
группы пользователей, перейдя на вкладку безопасности файла / папки.Папка Program Files защищена правами администратора. В Windows XP и более ранних версиях большинство людей все время работали с правами администратора. Многие программы предполагали, что это так и сделали всю свою работу в папке Program Files.
Когда Windows Vista была выпущена, они прекратили эту практику, заставив приложения вместо этого использовать:
Это сломало много старых приложений. Чтобы старое приложение продолжало использовать только папки администратора, Windows создала виртуальное хранилище для хранения измененных файлов. Посмотрите:
Вы найдете свои файлы там. Вы также можете использовать Проводник, открыв папку и нажав кнопку Файлы совместимости в верхней части окна.
источник
У меня была похожая проблема, вскоре после перехода на Windows 7 (из XP) я пытался разархивировать файл внутри,
C:\Program Files
и он продолжал выдавать мне ошибку «Отказано в доступе».После долгой борьбы я обнаружил, что мне нужно взять на себя ответственность за всю папку, прежде чем я смог изменить разрешения, чтобы разрешить группе администраторов полный доступ, что, по моему мнению, должно быть по праву.
Чтобы стать владельцем папки: щелкните правой кнопкой мыши папку и перейдите к ней
Properties
, затем нажмитеSecurity
вкладку, затем нажмитеAdvanced
, затемOwner
вкладку и нажмитеEdit
. Установите флажок «Заменить владельца на подконтейнеры и объекты», затем выберите нового владельца (например, группу «Администраторы»), а затем произнеситеOK
.источник
Users
группе разрешение на изменение. Однако вам не следует предоставлять полный доступ к программным файлам. По умолчанию все, кто был администратором, были плохим выбором дизайна, и они пытались это исправить в Vista.