Windows 7에서이 파일을 편집하는 데 문제가 있습니다.
C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules\FindJNI.cmake
Cygwin (vi) 또는 TextPad에서 편집하면 해당 두 프로그램이 변경 사항을 확인하여 디스크 어딘가에 기록됩니다 . 그러나 DOS cmd 셸에서 파일을 “입력”하면 파일이 전혀 변경되지 않은 것처럼 보입니다.
내가 알았던 한 가지는 cmd 쉘에서 소유자는 관리자이지만 Cygwin의 bash 쉘에서 소유자는 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 )에 도입 된 보안 기능으로 인해 “프로그램 파일”과 같은 보호 된 위치에 쓰려고하는 비 관리자 프로그램은 쓰기를 포착하여 대체 “사용자 친화적”위치로 리디렉션합니다.
파일을 만든 프로그램은 파일을 볼 수 있지만 대부분의 다른 프로그램은 파일을 볼 수 없습니다.
Wikipedia 상태 (및 관련 섹션을 강조 표시했습니다) :
사용자가 관리자 권한으로 실행된다는 가정하에 작성된 응용 프로그램은 제한된 사용자 계정으로 실행할 때 이전 버전의 Windows에서 문제를 겪었습니다. 종종 컴퓨터 전체 또는 시스템 디렉토리 (예 : 프로그램 파일) 또는 레지스트리 키에 쓰려고 시도했기 때문에 (특히 HKLM). UAC는 파일 및 레지스트리 가상화를 사용하여이를 완화하려고 시도합니다.이 가상화는 쓰기 (및 후속 읽기)를 사용자 프로필 내의 사용자 별 위치로 리디렉션합니다 . 예를 들어 응용 프로그램이 “C : \ program files \ appname \ settings.ini”에 쓰려고 시도하고 사용자에게 해당 디렉토리에 대한 쓰기 권한이 없으면 쓰기가 “C : \ Users \ username으로 리디렉션됩니다. \ AppData \ Local \ VirtualStore \ Program Files \ appname \ settings.ini”를 참조하십시오.
그래서 이론적으로 변경된 파일은 실제로에 기록되는C:\Users\YourUserName\AppData\Local\VirtualStore\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules
이 제한을 해결하는 유일한 방법 은 보안상의 이유로 권장되지 않는 UAC 를 완전히 비활성화 하는 것입니다.
가장 좋은 해결책은 실제로 경로에 cmake가 있고 사용자 프로필 내부와 같은 보호되지 않은 위치를 사용하는 것입니다.
답변
Program Files 폴더는 관리자 권한으로 보호됩니다. Windows XP 및 이전 버전에서는 대부분의 사람들이 항상 관리자로 실행되었습니다. 많은 프로그램이이 경우라고 가정하고 Program Files 폴더에서 모든 작업을 수행했습니다.
Windows Vista가 릴리스되면이 방법을 중단하여 응용 프로그램이 대신 사용하도록합니다.
C : \ Users \ % Username % \ AppData
이로 인해 많은 오래된 응용 프로그램이 중단되었습니다. 이전 응용 프로그램에서 관리자 전용 폴더를 계속 사용할 수 있도록 Windows에서는 변경된 파일을 보관할 가상 저장소를 만들었습니다.
C : \ Users \ % Username % \ AppData \ Local \ VirtualStore
거기에서 파일을 찾을 수 있습니다. 폴더를 열고 창 상단의 호환성 파일 버튼을 눌러 탐색기를 사용할 수도 있습니다 .
답변
XP에서 Windows 7로 이동 한 직후에 비슷한 문제가 발생하여 파일의 압축을 풀려고 시도했지만 C:\Program Files
액세스 거부 오류가 계속 발생했습니다.
레슬링을 많이 한 후에 Administrators 그룹의 모든 권한을 허용하기 위해 권한을 변경하기 전에 전체 폴더의 소유권을 가져야한다는 것을 알았습니다.
폴더의 소유권을 얻으려면 폴더를 마우스 오른쪽 버튼으로 클릭하고으로 이동 Properties
한 다음 Security
탭을 클릭하고을 클릭 Advanced
한 다음 Owner
탭을 클릭하고Edit
. “하위 컨테이너 및 개체의 소유자 바꾸기”를 체크 한 다음 새 소유자 (예 : “관리자”그룹)를 선택한 다음이라고 말합니다 OK
.