Windows Explorer से मिलान करने के लिए मुझे ftype और assoc कैसे मिलता है?


20

मैंने .pyWindows Explorer के माध्यम से फ़ाइल लॉन्च करने के लिए एसोसिएशन को बदल दिया है :

  1. उपकरण -> फ़ोल्डर -> फ़ाइल प्रकार।
  2. फिर ब्राउज़ करें .py
  3. Wordpad के लिए एसोसिएशन बदलें।

अब जब मैं कमांड लाइन में एक py फाइल का नाम टाइप करता हूं, वर्डपैड इसे खोलता है।

लेकिन assocऔर ftypeकमांड लाइन में अभी भी निम्नलिखित लौटें:

C:\> assoc .py
.py = Python.File

C:\> ftype Python.File
Python.File = "C:\Program\Python27\python.exe" "%1" %*

कैसे आ संघ काम कर रहा है, लेकिन assocऔर ftypeइसके बारे में पता नहीं कर रहे हैं?

मैंने शीघ्र पुनः आरंभ किया।


मेरी रजिस्ट्री से अधिक जानकारी:

HKEY_CLASSES_ROOT\.py
= Python.File

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\Application
= wordpad.exe

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids\Python.File
= 

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.py\(Standard)
= Python.File

अधिक रजिस्ट्री:

HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command\(Standard)
= "C:\Program\Python27\python.exe" "%1" %*`

मुझे लगता है यह वही है जो में दिखा रहा हूँ ftype Python.File। लेकिन इसका इस्तेमाल होता नहीं दिख रहा है।


(मैं परीक्षण के लिए ऐसा कर रहा हूं, इसलिए मैं अंततः अपने डिफ़ॉल्ट संस्करण को आसानी से चुन सकता हूं)।


जवाबों:


9

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

इसके अतिरिक्त, Unsigned Code Labs ने जो कहा है वह बहुत महत्वपूर्ण है। जब आप कक्षाओं को डीबग कर रहे हों, तो आपको HKLM\Software\Classes\और देखने की आवश्यकता है HKCU\Software\ClassesHKCRसिस्टम को क्वेरी करने के लिए बहुत उपयोगी है, लेकिन यह पता लगाने के लिए इतना अच्छा नहीं है कि यह दुर्व्यवहार क्यों है।

मैं अपने साथ विंडोज 7 प्रणाली पर एक छोटे से परीक्षण किया procmon.exe, और assocऔर ftypeआदेशों को सीधे लिखने की कोशिश करने के लिए प्रकट HKCR, और सिस्टम जाहिरा तौर पर है कि करने के लिए लिखित रूप में व्याख्या HKLM। मेरा वर्तमान खाता व्यवस्थापक समूह का सदस्य है, लेकिन UAC सक्षम है। जब मैंने कोशिश की तो मुझे मना कर दिया गया assoc .mytest=MyTest.File

अजीब तरह से, अगर मैं एक फाइल को राइट-क्लिक करके एक एसोसिएशन बनाता हूं, जिसे test.mytestनोटपैड के साथ जोड़कर, न तो इस एसोसिएशन को देखता है assocऔर न ही ftype। संघ में निश्चित रूप से नहीं है HKCUऔर HKCR। मैंने हालांकि रिबूट करने की कोशिश नहीं की है।



@ TheIncorrigible1 लिंक मृत है :(
डेवइनकाज़

@DaveInCaz ओह, यह वास्तव में दुखद है। मुझे गुस्सा आ रहा है कि उन्होंने सभी MSFT ब्लॉग लिंक तोड़ दिए हैं। मैं देखूंगा कि क्या मैं इसे पुनर्स्थापित कर सकता हूं; उम्मीद है कि यह सिर्फ एक नया लिंक है और गायब नहीं हुआ (जैसा कि कुछ अन्य चीजों के लिए होता है)
TheIncorrigible1


5

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

HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.TheExtensionYouWantToModify\UserChoice\ProgID

उदाहरण के लिए, यदि मैं अपने एमपी 3 को एमप्लेयर के साथ खोलना चाहता हूं तो मैं डाल दूंगा

HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3\UserChoice\ProgID 

"mplayerc.mp3" का मान

ऐसा करने की जटिलताएं क्या हैं: पहले आपको वैलिड्स प्रोगिड्स (उपयोग फ़ुटाइप) को जानना होगा, और दूसरा आपको उस हाइव तक लिखने की आवश्यकता है। विंडोज स्वचालित रूप से UserChoice कुंजी के लिए एक इंकार ACL डाल देता है, इसलिए आपको राइट एक्सेस प्राप्त करने के लिए उस इंकार नियम को हटाने का एक तरीका खोजने की आवश्यकता है। मैं प्रोग्राम सबइंक्ल का उपयोग करता हूं, जिसे आप यहां से डाउनलोड कर सकते हैं http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e8ba3e56-d8fe-4a91-93cf-696985e3927b&displaylang=en इन अनुमतियों को संशोधित करने के लिए। इसके अलावा आप 3rd पार्टी प्रोग्राम SetACL का उपयोग कर सकते हैं। मैं पहले को फिर से परिभाषित करता हूं क्योंकि वाक्य रचना बहुत अधिक सरल है।


3

एक्सप्लोरर (विंडोज शेल) हमेशा विक्रेता कुंजी में निर्दिष्ट एप्लिकेशन को वरीयता देता है जो एक्सटेंशन के डिफ़ॉल्ट मान के तहत निर्दिष्ट होता है। (आपके मामले .pyमें विस्तार Python.Fileहै, विक्रेता कुंजी है।)

ftypeऔर assocअन्य क्षेत्रों से उनके मूल्यों को पढ़ सकते हैं, मुझे यकीन नहीं है। यह एक्सप्लोरर कैसे करता है।

संपादित करें: यह पृष्ठ आपके लिए रूचिकर हो सकता है: MSDN - फ़ाइल प्रकार

विशेष रूप से यह:

HKEY_CLASSES_ROOT सबट्री, HKEY_CURRENT_USER \ Software \ Classes और HKEY_LOCAL_MACHINE \ Software \ Classes को विलय करके बनाई गई एक दृश्य है ।

शायद यह वह जगह है जहां विंडोज क्लैश के अलग-अलग हिस्से, अगर HKEY_LOCAL_MACHINE में "डिफ़ॉल्ट" एसोसिएशन है, तो आपके खाते में आपके द्वारा परिभाषित (जिसे तब HKEY_CRRENT_USER में संग्रहीत किया जाएगा) द्वारा ओवरराइड हो रही है।


3

Microsoft ने बदल दिया है कि यह विंडोज 8 से आगे कैसे काम करता है। इसे बदलने के लिए रजिस्ट्री को संपादित करना अब संभव नहीं है। Microsoft को उद्धृत करने के लिए :

प्री-विन 8 में, ऐप्स रजिस्ट्री में हेरफेर करके किसी फ़ाइल प्रकार / प्रोटोकॉल के लिए डिफ़ॉल्ट हैंडलर सेट कर सकते हैं, इसका मतलब है कि आपके पास आसानी से एक स्क्रिप्ट या रजिस्ट्री को हेरफेर करने वाली एक समूह नीति हो सकती है। हालाँकि विन 8 में, रजिस्ट्री परिवर्तन हैश (अद्वितीय उपयोगकर्ता और ऐप) द्वारा सत्यापित किए जाते हैं जो ऐप्स द्वारा छेड़छाड़ का पता लगाते हैं। वैध हैश की अनुपस्थिति में, हम रजिस्ट्री में डिफ़ॉल्ट को अनदेखा करते हैं।

जिस तरह से Microsoft आपसे यह अपेक्षा करता है कि अब वह एक xml फ़ाइल के साथ है जो समूह नीति के माध्यम से कार्यान्वित की जाती है। यहाँ निर्देश ।

शुक्र है कि क्रिस्टोफ़ कोलेबिज़ ने हैशिंग एल्गोरिथ्म को उल्टा कर दिया है और फ़ाइल प्रकार संघ को सेट करने के लिए सेटुएज़रएफटीए नामक एक उपकरण बनाया है । दुर्भाग्य से यह बंद स्रोत है।


SetUserFTA सुपर-उपयोगी है, और इसे स्क्रिप्ट किया जा सकता है।
डेवइन्काज़

1

यहाँ भ्रम यह है कि फ़ाइल खोलने के लिए क्या उपयोग किया जाता है और फ़ाइल चलाने के लिए क्या उपयोग किया जाता है । रजिस्ट्री कुंजी

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\Application
\.py\Application

वह है जो विंडोज़ को फ़ाइल खोलने का तरीका बताता है। फ़ाइल पर डबल क्लिक करने से इस एप्लिकेशन के साथ फ़ाइल खुल जाएगी।

चूंकि फ़ाइल एक निष्पादन योग्य फ़ाइल नहीं है, कमांड लाइन मानती है कि आप फ़ाइल को डिफ़ॉल्ट एप्लिकेशन के साथ खोलना चाहते हैं, जैसे कि आपने इसे डबल क्लिक किया था।

C: \ Program \ Python27 \ python.exe पर वापस एसोसिएशन को बदलना या अजगर को इंगित करने के लिए रजिस्ट्री कुंजी को संपादित करना यह वापस करना चाहिए कि यह कैसे हुआ करता था, जहां विंडोज़ मानती है कि आप डिफ़ॉल्ट प्रोग्राम के साथ फ़ाइल को खोलना चाहते हैं, जो है python.exe, जो तब प्रोग्राम चलाता है।


अगर मैं सही तरीके .py\Applicationसे समझूं, तो पाई फाइलों को खोलने के लिए कुंजी का उपयोग किया जाता है। मुझे समझ में नहीं आता है कि किन मामलों में मूल्य Python.Fileका उपयोग किया जाता है।
गौथियर

माजेंको के अनुसार यह मौसम पर निर्भर करता है कि दिया गया विस्तार विंडोज द्वारा निष्पादन योग्य ( PATHEXTचर देखें ) की तरह किया जाता है । हालाँकि, मुझे अतीत में पढ़ने की याद है कि एक्सप्लोरर के भीतर से जुड़े सहयोगी हमेशा Classesरजिस्ट्री कुंजी से उन लोगों को अधिलेखित करते हैं ।
Piotr Dobrogost

1

उद्देश्य और स्थान के लिए आपका सबसे बड़ा सुराग "बड़े प्रकार" में है, अर्थात, संबंधित पित्ती के नाम: HKLM और HKTU

फ़ाइल संघों को दोनों पित्ती में सेट किया गया है और इसके दो अलग-अलग उद्देश्य हैं:

जैसा कि नाम का अर्थ है, HKCU रजिस्ट्री प्रविष्टियाँ CURRENT USER के लिए फ़ाइल संघों को सेट करती हैं और HKLM में संबंधित फ़ाइल प्रकार सेटिंग्स को ओवरराइड करती हैं।

HKLM LOCAL मशीन के लिए फ़ाइल संघों को सेट करता है, अर्थात, मशीन के सभी USERS के लिए (जब तक HKCU प्रविष्टियों द्वारा ओवरराइड नहीं किया जाता है)। (Win98 के लिए, HKCR, HKLM \ Software \ Classes के लिए केवल एक छोटा उर्फ ​​था। वे अलग-अलग या अलग-अलग पित्ती नहीं थे। हालांकि, यह Win XP के लिए बदल गया और अब सच नहीं है। HKCR अब एक वर्चुअल हाइव है जो विलय का परिणाम है। HKLM \ Software \ Classes \, HKCU \ Software \ Classes \, और HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts HKCU जानकारी पूर्ववर्ती लेने के साथ।)

यह दो चरण प्रणाली न केवल एक-से-एक, बल्कि कई-से-एक और कई-कई फ़ाइल एसोसिएशन योजनाओं की सुविधा देती है। उदाहरण के लिए, .htm, .html और .shtml फ़ाइलपेट, सभी को ProgID = htmlfile पर सेट किया जा सकता है, जो बदले में एकल ब्राउज़र को परिभाषित कर सकता है। OTOH, प्रविष्टियों में OpenWithList या OpenWithProgID उपकुंजियाँ हो सकती हैं जिनमें कई ब्राउज़र, संपादकों या अन्य ऐप्स की सूची से फ़ाइल खोलने के लिए कई प्रविष्टियाँ हैं।

HKLM \ Software \ Classes \ और HKCU \ Software \ Classes दोनों एक ही तरीके से संचालित होते हैं (एक बस दूसरे पर पूर्वता लेता है)। सरलतम रूप में फ़ाइल एक्सटेंशन के लिए एक रजिस्ट्री कुंजी है (उदाहरण के लिए, HKCR.txt) जिसका डिफ़ॉल्ट मान संगत प्रोगिड (जैसे, txtfile) है। डिफ़ॉल्ट मान के अलावा, या इसके बजाय, "OpenWithProgID" उपकुंजी (जैसे, txtfile और htmlfile) के लिए सूचीबद्ध अतिरिक्त ProgID नाम हो सकते हैं, और / या अतिरिक्त अनुप्रयोग नाम "OpenWithList" (उदाहरण के लिए, नोटपैड ++) के तहत उपकुंजियों को प्रदर्शित कर सकते हैं .exe, Opera.exe, Firefox.exe)।

प्रत्येक ProgID को HKCR (जैसे, HKCR \ txtfile) के भीतर एक अन्य कुंजी में परिभाषित किया गया है। इस कुंजी में उपकुंजियाँ होती हैं जो विंडोज़ को बताती हैं कि किस आइकन का उपयोग करना है और कैसे खोलना है, प्रिंट करना है, प्रिंट करना है, आदि से संबंधित फाइल (e।, G, HKCR \ txtfile \ shell \ open \ कमांड)। इसी प्रकार, प्रत्येक एप्लिकेशन का नाम HKCR \ Applications (जैसे, HKEY_CLASSES_ROOT \ Applications \ Firefox.exe \ shell \ open \ कमांड) के तहत एक उपकुंजी के रूप में परिभाषित किया गया है।

HKCU \ Software \ Classes कुंजी के अलावा, उपयोगकर्ता खाता फ़ाइल संघों HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts कुंजी में पाए जाते हैं। ये प्रविष्टियाँ केवल विंडोज एक्सप्लोरर के लिए नहीं हैं जैसा कि सुझाव दिया गया है, लेकिन उपयोगकर्ता खाता फ़ाइल एसोसिएशन ओवरराइड का एक अतिरिक्त स्रोत हैं। प्रविष्टियाँ एक्सप्लोरर में फ़ाइल एसोसिएशन टूल द्वारा बनाई गई हैं (एक्सप्लोरर \ टूल्स \ फ़ोल्डर विकल्प \ फ़ाइल प्रकार) और प्रत्येक सूचीबद्ध फ़ाइल एक्सटेंशन के लिए एक ओपनविथलिस्ट और / या एक ओपनविथप्रोगआईडी उप शामिल हैं।

एक फ़ाइल एसोसिएशन का निर्धारण करने के लिए, Windows एक संगत फ़ाइल एक्सटेंशन के लिए HKCU प्रविष्टियों में पहले दिखता है। यदि कोई नहीं पाया जाता है तो केवल एचकेएलएम प्रविष्टियाँ खेल में आती हैं। (नोट: मैंने परीक्षण नहीं किया है जो पूर्वता लेता है - HKCU \ Software \ Classes या HKCU \ MIcrosoft \ Windows \ CurrentVersion \ Explorer \ FileExts लेकिन मुझे संदेह है कि यह FileExts कुंजी होगी)। इसी तरह, यदि संदर्भित संदर्भ या आवेदन नाम एचकेसीयू में नहीं मिला है, तो एचकेएलएम प्रविष्टियां खोजी जाती हैं। (ध्यान दें कि \ Applications \ प्रविष्टियाँ केवल मनमाना नाम हैं - भले ही वे आम तौर पर डिस्क एक्स फ़ाइल नाम पर वास्तविक के समान हों।)

तो एक विशिष्ट उपयोगकर्ता खाते के लिए एक फ़ाइल एसोसिएशन को परिभाषित करने के लिए, HKCU हाइव में प्रविष्टियां बनाएं। सभी उपयोगकर्ताओं के लिए एक एसोसिएशन को परिभाषित करने के लिए, HKLM हाइव (HKCR) में प्रविष्टियाँ बनाएँ और HKCU हाइव के सभी संदर्भों को उस फ़ाइल प्रकार में हटा दें। जाहिर है कि आपको रजिस्ट्री कुंजियों के लिए उचित पहुँच अधिकार की आवश्यकता है।

मैं गधों और फुटपाथ के साधनों का उपयोग नहीं करता हूं क्योंकि मैं या तो इंटरएक्टिव या बैच मोड में RegEdit का उपयोग करना पसंद करता हूं, लेकिन अन्य टिप्पणियों से यह प्रतीत होता है कि वे केवल HKLM हाइव पर काम करते हैं और HKCU कुंजियाँ साफ़ करने / सेट करने के लिए बेकार हैं। कुछ समय लें और अधिक उदाहरण देखने के लिए RegEdit के साथ उपरोक्त कुंजी ब्राउज़ करें।


HKCR आपके सोचने के तरीके पर काम नहीं करता है। HKCR में, मेरे पास "सोर्सकोड" प्रविष्टि है। HKLM \ Software \ Classes में "sourcecode" मौजूद नहीं है। दूसरी ओर, HKCU \ Software \ Classes में, "sourcecode" मौजूद है। तो, स्पष्ट रूप से HKCR में HKCU \ Software \ Classes से प्रविष्टियाँ शामिल हैं। दूसरी ओर, HKCR और HKLM दोनों में "साउंडक्रैक" और "SPCFile" मौजूद हैं। लेकिन HKCU \ Software \ Classes के पास ये नहीं हैं। इस प्रकार, HKCR में स्पष्ट रूप से HKLM की प्रविष्टियाँ भी शामिल हैं। HKCR निश्चित रूप से दो स्थानों को कुछ फैशन में मिला रहा है। यह भी देखें superuser.com/a/266274
बेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.