मैं विंडोज 7 पर "प्रोग्राम फाइल्स" फाइल को एडिट क्यों नहीं कर सकता?


25

मुझे विंडोज 7 पर इस फ़ाइल को संपादित करने में समस्या हो रही है:

C:\Program Files (x86)\CMake 2.8.7\share\cmake-2.8\Modules\FindJNI.cmake

यदि मैं इसे साइग्विन (vi) या टेक्स्टपैड में संपादित करता हूं, तो उन दो कार्यक्रमों में परिवर्तन दिखाई देते हैं, इसलिए यह कहीं न कहीं डिस्क पर लिखा जा रहा है । लेकिन अगर मैं फ़ाइल को DOS cmd शेल में "टाइप" करता हूं, तो ऐसा लगता है कि फ़ाइल बिल्कुल भी नहीं बदली गई है।

एक बात मैंने देखी कि cmd शेल में, स्वामी प्रशासक है, लेकिन सिग्विन के बैश शेल में, स्वामी का नाम है:

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

यह कैसे हो सकता है? यह ऐसा है जैसे एक ही निर्देशिका में एक ही नाम के साथ दो अलग-अलग फाइलें हैं।


क्या आपको कोई त्रुटि संदेश मिल रहा है?
क्रिस एफ

क्या यह कुछ प्रकार के वाहिका फ़ोल्डर पुनर्निर्देशन हो सकता है (चूंकि सिग्विन 32 बिट है)?
एंड्रयू लैम्बर्ट

जवाबों:


35

विंडोज विस्टा ( यूएसी ) के साथ शुरू की गई सुरक्षा सुविधाओं के कारण कोई भी गैर-प्रशासक कार्यक्रम जो "प्रोग्राम फाइल्स" जैसे संरक्षित स्थानों पर लिखने की कोशिश करता है, उनके लेखन को पकड़ा जाएगा और वैकल्पिक "उपयोगकर्ता के अनुकूल" स्थान पर पुनर्निर्देशित किया जाएगा।

फ़ाइल बनाने वाला प्रोग्राम फ़ाइल को देखने में सक्षम होगा, लेकिन अधिकांश अन्य प्रोग्राम नहीं होंगे।

विकिपीडिया बताता है (और मैंने संबंधित अनुभाग पर प्रकाश डाला है):

इस धारणा के साथ लिखे गए एप्लिकेशन कि उपयोगकर्ता सीमित विशेषाधिकार वाले विंडोज खातों के अनुभवी संस्करणों में समस्याओं का सामना करता है, जब सीमित उपयोगकर्ता खातों से चलाया जाता है, अक्सर क्योंकि वे मशीन-वाइड या सिस्टम निर्देशिकाओं (जैसे प्रोग्राम फाइल्स) या रजिस्ट्री कुंजियों को लिखने का प्रयास करते हैं। (विशेष रूप से एचकेएलएम)। UAC ने फ़ाइल और रजिस्ट्री वर्चुअलाइजेशन का उपयोग करके इसे कम करने का प्रयास किया , जो उपयोगकर्ता के प्रोफ़ाइल के भीतर प्रति उपयोगकर्ता स्थान पर रीडायरेक्ट (और बाद में पढ़ता है) लिखता है । उदाहरण के लिए, यदि कोई एप्लिकेशन "C: \ program files \ appname \ settings.ini" को लिखने का प्रयास करता है और उपयोगकर्ता के पास उस निर्देशिका को लिखने की अनुमति नहीं है, तो लेखन "C: \ Users \ उपयोगकर्ता नाम पर पुनर्निर्देशित हो जाएगा \ 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

इस प्रतिबंध के आसपास एकमात्र तरीका यूएसी को पूरी तरह से अक्षम करना है , जो सुरक्षा कारणों से अनुशंसित नहीं है।

सबसे अच्छा समाधान यह है कि वास्तव में आपके रास्ते में cmake होना चाहिए और आपके उपयोगकर्ता प्रोफ़ाइल के अंदर कहीं गैर-सुरक्षित स्थान का उपयोग करना चाहिए।


धन्यवाद। बहुत ज्यादा उलझन। मेरे मार्ग में cmake होने (या नहीं) से हालांकि कोई फर्क नहीं पड़ेगा? समस्या यह है कि मैं इस cmake फ़ाइल को डीबग करने का प्रयास कर रहा हूँ, क्योंकि यह ठीक से काम नहीं कर रहा है।
दान

क्षमा करें, मैं मान रहा था कि आप फ़ाइल के खिलाफ cmake चला रहे थे। जो भी फ़ाइल है उसका उपयोग करने के लिए आपको इसे कहीं और लिखना होगा तब आपको फ़ाइल को कॉपी करने के लिए एक्सप्लोरर का उपयोग करने में सक्षम होना चाहिए, आपको एक UAC प्रॉम्प्ट प्राप्त करना चाहिए ताकि आप यह सुनिश्चित कर सकें कि आप क्या करना चाहते हैं और उसके बाद आपकी फ़ाइल अधिलेखित हो जानी चाहिए। मुख्य बात यह है कि आप केवल उन स्थानों में फ़ाइलों को कॉपी / लिखने के लिए यूएसी जागरूक कार्यक्रमों (जैसे एक्सप्लोरर) का उपयोग कर सकते हैं।
मूकूबाई

यूएसी को निष्क्रिय करना केवल काम नहीं है । आपको बस फ़ाइल / निर्देशिका देने की आवश्यकता है जो फ़ाइल / फ़ोल्डर के सुरक्षा टैब पर जाकर उपयोगकर्ता समूह Modifyको समस्या की अनुमति दे Usersरही है।
स्कॉट चैंबरलेन

LOL यह व्यवहार विचित्र है! यह मेरे द्वारा बताई गई बहुत सी विचित्रता की व्याख्या करता है। धन्यवाद।
Jez

13

प्रोग्राम फ़ाइल फ़ोल्डर प्रशासक अधिकारों द्वारा सुरक्षित है। विंडोज एक्सपी और उससे पहले के समय में ज्यादातर लोग प्रशासक के रूप में भागे थे। कई कार्यक्रमों ने यह माना कि यह मामला था और उन्होंने प्रोग्राम फाइल फ़ोल्डर में अपना सारा काम किया।

जब Windows Vista जारी किया गया था, तो उन्होंने इस अभ्यास को रोक दिया, अनुप्रयोगों को उपयोग करने के लिए मजबूर किया:

C: \ Users \% प्रयोक्ता नाम% \ AppData

इससे कई पुराने एप्लिकेशन टूट गए। पुराने एप्लिकेशन को केवल फ़ोल्डर का उपयोग करने के लिए जारी रखने की अनुमति देने के लिए, Windows ने परिवर्तित फ़ाइलों को रखने के लिए एक वर्चुअल स्टोर बनाया।

C: \ Users \% प्रयोक्ता नाम% \ AppData \ Local \ VirtualStore

आपको अपनी फाइलें मिलेंगी। आप फ़ोल्डर को खोलकर और विंडो के शीर्ष पर संगतता फ़ाइलें बटन दबाकर भी एक्सप्लोरर का उपयोग कर सकते हैं।


धन्यवाद। यह (और स्वीकृत उत्तर) एक बहुत ही रहस्यमय समस्या को हल कर रहा था जो मैं कर रहा था। अब सही समझ में आता है कि यह समझाया गया है। आपका उत्तर छोटा और सीधे बिंदु पर है। +1 धन्यवाद!
सवार

0

मुझे एक समान समस्या थी, विंडोज 7 (XP से) जाने के तुरंत बाद मैं अंदर एक फ़ाइल को अनज़िप करने की कोशिश कर रहा था C:\Program Filesऔर यह मुझे एक्सेस अस्वीकृत त्रुटि देता रहा।

बहुत कुश्ती के बाद मैंने पाया कि मुझे प्रशासक समूह को पूर्ण एक्सेस की अनुमति देने के लिए अनुमतियों को बदलने से पहले पूरे फ़ोल्डर का स्वामित्व लेना था - जो कि मेरी राय में, यह सही होना चाहिए।

किसी फ़ोल्डर का स्वामित्व लेने के लिए: फ़ोल्डर पर राइट-क्लिक करें और Propertiesफिर Securityटैब पर क्लिक करें Advanced, फिर Ownerटैब, और फिर क्लिक करें Edit। "उप-मालिकों और वस्तुओं पर प्रतिस्थापित स्वामी" की जांच करें, फिर नए मालिक (जैसे, "व्यवस्थापक" समूह) का चयन करें, फिर कहें OK


ऊ, आपको स्वामित्व लेने की आवश्यकता नहीं है। बस Usersसमूह संशोधित अनुमति दें। हालाँकि आपको प्रोग्राम फ़ाइलों तक पूर्ण पहुँच नहीं दी जानी चाहिए । व्यवस्थापक होने के नाते सभी का डिफ़ॉल्ट एक बुरा डिज़ाइन विकल्प था और उन्होंने इसे विस्टा में ठीक करने का प्रयास किया।
स्कॉट चैंबरलेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.