Ich habe Probleme beim Bearbeiten dieser Datei unter Windows 7:
C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules\FindJNI.cmake
Wenn ich es in Cygwin (vi) oder TextPad bearbeite, sehen diese beiden Programme die Änderungen, sodass es irgendwo auf die Festplatte geschrieben wird . Aber wenn ich die Datei in eine DOS-Cmd-Shell "eingebe", sieht es so aus, als ob die Datei überhaupt nicht geändert wurde.
Eine Sache, die mir aufgefallen ist, ist, dass in der Cmd-Shell der Besitzer Administratoren ist, in der Bash-Shell von Cygwin jedoch 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
Wie kann das sein? Es ist, als gäbe es zwei verschiedene Dateien mit demselben Namen im selben Verzeichnis.
Antworten:
Aufgrund der mit Windows Vista ( UAC ) eingeführten Sicherheitsfunktionen werden alle Programme, die keine Administratoren sind und versuchen, an geschützte Speicherorte wie "Programme" zu schreiben, abgefangen und an einen anderen "benutzerfreundlichen" Speicherort umgeleitet.
Das Programm, das die Datei erstellt hat, kann die Datei sehen, die meisten anderen Programme jedoch nicht.
Wikipedia gibt an (und ich habe den relevanten Abschnitt hervorgehoben):
Theoretisch wird also in Ihre geänderte Datei geschrieben
C:\Users\YourUserName\AppData\Local\VirtualStore\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules
Die einzige Möglichkeit, diese Einschränkung zu umgehen , besteht darin, die Benutzerkontensteuerung vollständig zu deaktivieren. Dies wird aus Sicherheitsgründen nicht empfohlen.
Die beste Lösung ist, dass sich cmake tatsächlich in Ihrem Pfad befindet und einen nicht geschützten Speicherort verwendet, z. B. irgendwo in Ihrem Benutzerprofil.
quelle
Modify
derUsers
Benutzergruppe nur die Datei / das Verzeichnis zuweisen, die / das Probleme verursacht, indem Sie zur Registerkarte Sicherheit der Datei / des Ordners wechseln.Der Ordner "Programme" ist durch Administratorrechte geschützt. In Windows XP und früheren Versionen wurden die meisten Benutzer die ganze Zeit als Administrator ausgeführt. Viele Programme gingen davon aus, dass dies der Fall ist, und erledigten ihre gesamte Arbeit im Ordner "Programme".
Als Windows Vista veröffentlicht wurde, beendeten sie diese Praxis und zwangen die Anwendungen, stattdessen Folgendes zu verwenden:
Dies hat viele ältere Anwendungen zerstört. Damit ältere Anwendungen weiterhin nur Administratorordner verwenden können, hat Windows einen virtuellen Speicher erstellt, in dem geänderte Dateien gespeichert werden.
Dort finden Sie Ihre Dateien. Sie können den Explorer auch verwenden, indem Sie den Ordner öffnen und oben im Fenster auf die Schaltfläche Kompatibilitätsdateien klicken .
quelle
Ich hatte ein ähnliches Problem, kurz nachdem ich auf Windows 7 (von XP) umgestiegen war, versuchte ich, eine Datei darin zu entpacken,
C:\Program Files
und es gab mir immer wieder den Fehler Zugriff verweigert.Nach langem Ringen stellte ich fest, dass ich den Besitz des gesamten Ordners übernehmen musste, bevor ich die Berechtigungen ändern konnte, um der Administratorgruppe Vollzugriff zu gewähren - was meiner Meinung nach zu Recht der Fall sein sollte.
Um den Besitz eines Ordners zu übernehmen: Klicken Sie mit der rechten Maustaste auf den Ordner und gehen Sie zu
Properties
, klicken Sie dann auf dieSecurity
Registerkarte, klicken Sie dann aufAdvanced
, dann auf dieOwner
Registerkarte und klicken Sie dann aufEdit
. Aktivieren Sie "Eigentümer in Subcontainern und Objekten ersetzen", wählen Sie den neuen Eigentümer aus (z. B. die Gruppe "Administratoren") und sagen Sie dannOK
.quelle
Users
Gruppe einfach Änderungsberechtigungen. Sie sollten jedoch keinen vollständigen Zugriff auf Programmdateien erhalten. Die Standardeinstellung für alle Administratoren war eine schlechte Wahl für das Design, und sie haben versucht, diese in Vista zu beheben.