Saya mengalami kesulitan mengedit file ini di Windows 7:
C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules\FindJNI.cmake
Jika saya mengeditnya di Cygwin (vi) atau TextPad, kedua program itu melihat perubahannya, jadi itu ditulis ke disk di suatu tempat . Tetapi jika saya "mengetik" file dalam shell cmd DOS, sepertinya file tersebut belum berubah sama sekali.
Satu hal yang saya perhatikan adalah bahwa di shell cmd, pemiliknya adalah Administrator, tetapi di shell bash Cygwin, pemiliknya adalah 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
Bagaimana ini bisa terjadi? Sepertinya ada dua file berbeda dengan nama yang sama di direktori yang sama.
Jawaban:
Karena fitur keamanan yang diperkenalkan dengan Windows Vista ( UAC ), setiap program non-Administrator yang mencoba menulis ke lokasi yang dilindungi seperti "Program Files" akan membuat tulisan mereka ketahuan dan dialihkan ke lokasi "ramah pengguna" alternatif.
Program yang membuat file akan dapat melihat file, tetapi sebagian besar program lain tidak.
Status Wikipedia (dan saya telah menyoroti bagian yang relevan):
Jadi secara teori file Anda yang diubah sebenarnya sedang ditulis
C:\Users\YourUserName\AppData\Local\VirtualStore\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules
Satu-satunya cara mengatasi pembatasan ini adalah menonaktifkan UAC sepenuhnya , yang tidak direkomendasikan untuk alasan keamanan.
Solusi terbaik adalah yang seharusnya memiliki cmake di jalur Anda dan menggunakan lokasi yang tidak dilindungi seperti di suatu tempat di dalam profil pengguna Anda.
sumber
Modify
izin keUsers
grup pengguna dengan masuk ke tab keamanan file / folder.Folder Program Files dilindungi oleh hak Administrator. Di Windows XP dan sebelumnya, kebanyakan orang berlari sebagai Administrator sepanjang waktu. Banyak program menganggap ini adalah masalahnya dan melakukan semua pekerjaan mereka di folder Program Files.
Ketika Windows Vista dirilis, mereka menghentikan praktik ini, memaksa aplikasi untuk menggunakan:
Ini merusak banyak aplikasi lama. Untuk memungkinkan aplikasi yang lebih lama untuk terus menggunakan folder Administrator saja, Windows membuat toko virtual untuk menyimpan file yang diubah. Lihatlah:
Anda akan menemukan file Anda di sana. Anda juga dapat menggunakan Explorer dengan membuka folder dan menekan tombol File kompatibilitas di bagian atas jendela.
sumber
Saya memiliki masalah yang sama, tak lama setelah pindah ke Windows 7 (dari XP) Saya mencoba membuka zip file di dalamnya
C:\Program Files
dan itu terus memberi saya kesalahan Akses Ditolak.Setelah banyak bergulat saya menemukan bahwa saya harus mengambil kepemilikan seluruh folder sebelum saya dapat mengubah izin untuk memungkinkan akses penuh grup Administrators - yang, menurut saya, seharusnya benar.
Untuk mengambil kepemilikan folder: klik kanan pada folder dan pergi ke
Properties
, lalu klik padaSecurity
tab, lalu klikAdvanced
, laluOwner
tab, dan klikEdit
. Centang "Ganti pemilik pada subkontainer dan objek", lalu pilih pemilik baru (misalnya, grup "Administrator"), lalu ucapkanOK
.sumber
Users
grup memodifikasi izin. Namun Anda tidak boleh diberikan akses penuh ke file program. Default semua orang menjadi administrator adalah pilihan desain yang buruk dan mereka berusaha memperbaikinya di Vista.