Windows 7에서“프로그램 파일”파일을 편집 할 수없는 이유는 무엇입니까?


25

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

어떻게 이럴 수있어? 같은 디렉토리에 같은 이름을 가진 두 개의 다른 파일이있는 것과 같습니다.


오류 메시지가 나타 납니까?
ChrisF

Cygwin이 32 비트이므로 WoW64 폴더 리디렉션 이 될 수 있습니까?
Andrew Lambert

답변:


35

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가 있고 사용자 프로필 내부와 같은 보호되지 않은 위치를 사용하는 것입니다.


감사. 매우 혼란 스럽습니다. 내 경로에 cmake를 사용하면 어떻게 차이가 있습니까? 문제는이 cmake 파일이 제대로 작동하지 않기 때문에이 cmake 파일을 디버깅하려고한다는 것입니다.
Dan

죄송합니다, 파일에 대해 cmake를 실행하고 있다고 가정합니다. 파일을 다른 곳에서 쓰려면 탐색기를 사용하여 파일을 복사 할 수 있어야합니다. UAC 프롬프트가 표시됩니다. 파일을 덮어 써야합니다. 가장 중요한 것은 UAC 인식 프로그램 (예 : 탐색기) 만 사용하여 해당 위치에있는 파일을 복사 / 쓰기 할 수 있다는 것입니다.
Mokubai

UAC를 비활성화하는 것이 유일한 해결 방법 은 아닙니다 . 파일 / 폴더의 보안 탭으로 이동 하여 문제를 일으키는 파일 / 디렉토리를 사용자 그룹에 Modify부여 Users하면됩니다.
Scott Chamberlain

LOL이 행동은 기괴하다! 그것은 내가 가진 많은 이상한 것을 설명합니다. 감사.
Jez

13

Program Files 폴더는 관리자 권한으로 보호됩니다. Windows XP 및 이전 버전에서는 대부분의 사람들이 항상 관리자로 실행되었습니다. 많은 프로그램이이 경우라고 가정하고 Program Files 폴더에서 모든 작업을 수행했습니다.

Windows Vista가 릴리스되면이 방법을 중단하여 응용 프로그램이 대신 사용하도록합니다.

C : \ Users \ % Username % \ AppData

이로 인해 많은 오래된 응용 프로그램이 중단되었습니다. 이전 응용 프로그램에서 관리자 전용 폴더를 계속 사용할 수 있도록 Windows에서는 변경된 파일을 보관할 가상 저장소를 만들었습니다.

C : \ Users \ % Username % \ AppData \ Local \ VirtualStore

거기에서 파일을 찾을 수 있습니다. 폴더를 열고 창 상단의 호환성 파일 버튼을 눌러 탐색기를 사용할 수도 있습니다 .


감사. 이 (그리고 받아 들인 대답)은 내가 겪었던 매우 신비한 문제를 해결했습니다. 이제 설명되었으므로 완벽하게 이해됩니다. 당신의 대답은 짧고 요점까지 직접적입니다. +1 감사합니다!
ridgerunner

0

XP에서 Windows 7로 이동 한 직후에 비슷한 문제가 발생하여 파일의 압축을 풀려고 시도했지만 C:\Program Files액세스 거부 오류가 계속 발생했습니다.

레슬링을 많이 한 후에 Administrators 그룹의 모든 권한을 허용하기 위해 권한을 변경하기 전에 전체 폴더의 소유권을 가져야한다는 것을 알았습니다.

폴더의 소유권을 얻으려면 폴더를 마우스 오른쪽 버튼으로 클릭하고으로 이동 Properties한 다음 Security탭을 클릭하고을 클릭 Advanced한 다음 Owner탭을 클릭하고Edit . "하위 컨테이너 및 개체의 소유자 바꾸기"를 체크 한 다음 새 소유자 (예 : "관리자"그룹)를 선택한 다음이라고 말합니다 OK.


어, 당신은 소유권을 가질 필요가 없습니다. Users그룹 에게 수정 권한을 부여하십시오. 그러나 프로그램 파일에 대한 전체 액세스 권한을 부여 해서는 안됩니다 . 관리자 인 모든 사람의 기본 설정은 잘못된 디자인 선택이며 Vista에서 수정하려고했습니다.
Scott Chamberlain 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.