Mam problem z edycją tego pliku w systemie Windows 7:
C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules\FindJNI.cmake
Jeśli edytuję go w Cygwin (vi) lub TextPad, te dwa programy widzą zmiany, więc zapisują się gdzieś na dysku . Ale jeśli „wpisuję” plik w powłoce cmd DOS, wygląda na to, że plik w ogóle nie został zmieniony.
Zauważyłem tylko, że w powłoce cmd właścicielem są Administratorzy, ale w powłoce bash Cygwina właścicielem jest 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
Jak to może być? To tak, jakby w tym samym katalogu były dwa różne pliki o tej samej nazwie.
Odpowiedzi:
Ze względu na funkcje bezpieczeństwa wprowadzone w systemie Windows Vista ( UAC ) każdy program niebędący administratorem, który próbuje zapisywać w chronionych lokalizacjach, takich jak „Pliki programów”, zostanie przechwycony i przekierowany do alternatywnej lokalizacji „przyjaznej dla użytkownika”.
Program, który utworzył plik, będzie mógł go zobaczyć, ale większość innych programów tego nie zrobi.
Wikipedia stwierdza (i zaznaczyłem odpowiednią sekcję):
Więc teoretycznie twój zmieniony plik jest w rzeczywistości zapisywany
C:\Users\YourUserName\AppData\Local\VirtualStore\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules
Jedynym sposobem obejścia tego ograniczenia jest całkowite wyłączenie UAC , co nie jest zalecane ze względów bezpieczeństwa.
Najlepszym rozwiązaniem jest posiadanie cmake na twojej ścieżce i używanie niezabezpieczonej lokalizacji, takiej jak gdzieś w twoim profilu użytkownika.
źródło
Modify
uprawnieniaUsers
grupie użytkowników, przechodząc do zakładki bezpieczeństwa pliku / folderu.Folder Program Files jest chroniony prawami administratora. W systemie Windows XP i wcześniejszych większość osób cały czas działała jako administrator. Wiele programów zakładało, że tak jest, i całą swoją pracę wykonało w folderze Program Files.
Po wydaniu systemu Windows Vista zaprzestano tej praktyki, zmuszając aplikacje do korzystania z:
To zepsuło wiele starszych aplikacji. Aby starsza aplikacja mogła nadal korzystać z folderów tylko dla administratora, system Windows utworzył sklep wirtualny, w którym przechowywane są zmienione pliki. Spójrz:
Znajdziesz tam swoje pliki. Możesz także użyć Eksploratora, otwierając folder i naciskając przycisk Pliki kompatybilności w górnej części okna.
źródło
Miałem podobny problem, wkrótce po przejściu do systemu Windows 7 (z XP) próbowałem rozpakować plik wewnątrz
C:\Program Files
i ciągle pojawiał się błąd odmowy dostępu.Po wielu zmaganiach odkryłem, że musiałem przejąć na własność cały folder, zanim mogłem zmienić uprawnienia, aby umożliwić grupie administratorów pełny dostęp - co moim zdaniem powinno to mieć.
Aby przejąć własność folderu: kliknij folder prawym przyciskiem myszy i przejdź do
Properties
, a następnie kliknijSecurity
kartę, a następnie kliknijAdvanced
, a następnieOwner
kartę i kliknijEdit
. Zaznacz „Zastąp właściciela subkontenerów i obiektów”, następnie wybierz nowego właściciela (np. Grupę „Administratorzy”), a następnie powiedzOK
.źródło
Users
grupie uprawnienia do modyfikacji. Jednak należy nie mieć pełny dostęp do plików programu. Domyślnie każdy, kto jest administratorem, był złym wyborem projektowym i próbowali go naprawić w systemie Vista.