2010-07-28 8 views
5

क्या डेटा और जहां, मैं ठीक से एक फ़ाइल संघ बनाने के लिए Windows रजिस्ट्री में जोड़ना चाहिए?विंडोज रजिस्ट्री में फाइल एसोसिएशन को सही तरीके से कैसे जोड़ा जाए?

मैं मुख्य रूप से कुछ पुराने अनुप्रयोगों है कि मैं साल पहले लिखा था, जो विजुअल स्टूडियो .NET का Windows इंस्टालर बंडल इस्तेमाल किया फ़ाइलों के समूह बनाने के लिए की वजह से यह सवाल पूछते। मेरे द्वारा इंस्टॉल किए गए एक्सटेंशन .whr और .encxml थे।

अब, कंप्यूटर जिस पर इन आवेदनों स्थापित कर रहे हैं पर, एक अजीब समस्या तब होती है कभी कभी - जब किसी फ़ाइल गूगल क्रोम या इंटरनेट एक्सप्लोरर (विशेष रूप से एक exe, MSI या ज़िप फ़ाइल) या तो में डाउनलोड किया जाता है, ब्राउज़र होगा फ़ाइल एक्सटेंशन को मेरे इंस्टॉलर द्वारा इंस्टॉल किए गए एक्सटेंशन में से किसी एक में बदलें। मुझे नहीं पता कि यह अन्य ब्राउज़रों को प्रभावित करता है - क्या उन दोनों में कुछ भी समान है? तो ... अगर आप डाउनलोड, उदाहरण के लिए, http://example.com/downloads/application.exe के लिए, फ़ाइल http://example.com.downloads/application.encxml के रूप में डाउनलोड किया जाएगा (या .whr, जो भी एक पल के लिए यह उठाता है) कोई स्पष्ट कारण के।

मैं नोट करना चाहिए कि कुंजी है कि HKCR\.whr और HCKR\.encxml कुंजी संदर्भ (खाता प्रबंधक एन्क्रिप्टेड एक्सएमएल फ़ाइल और काम के घंटे रिकॉर्ड) उन में रिक्त स्थान है, और जब मैं दृश्य स्टूडियो में संघ बनाया है, मैं एक में नहीं जोड़ा था "। " आगे की तरफ़। शायद रिक्त स्थान की अनुमति नहीं है, और/या आपको "।" के साथ उपसर्ग करना चाहिए? रजिस्ट्री कोड ठीक लगता है, लेकिन मैं अपने रजिस्ट्री कि हर दूसरे आवेदन संघ कक्षा में एक स्थान का उपयोग नहीं करता है के माध्यम से देख द्वारा देखा, और न ही इस मुद्दे को किसी भी मशीनों मैं के बारे में पता पर स्थापित किसी भी आवेदन से किसी भी अन्य फ़ाइल एक्सटेंशन के साथ होता है - केवल मेरे अनुप्रयोगों के वीएस इंस्टॉलर द्वारा बनाए गए। मैं इसी रजिस्ट्री कुंजी और फ़ाइल एक्सटेंशन से संबंधित मूल्यों की एक रजिस्ट्री डंप चिपकाया है - के बाद से एमएसआई स्वामित्व है मैं पता नहीं है कि अगर यह इसके बारे में सब है, लेकिन मैं क्या अन्य अनुप्रयोगों से पता से सब कुछ किया जाना चाहिए। मैंने हमेशा इस मुद्दे के बारे में वर्षों से सोचा है, लेकिन इसे कभी समझ नहीं सकता। मैं जल्द ही उन पुराने अनुप्रयोगों में से एक को नए उत्पाद के साथ बदल रहा हूं, इसलिए इस बार मैं यह सुनिश्चित करना चाहता हूं कि इस तरह की कोई अजीब बग नहीं है ...

यहां डेटा है (ध्यान दें कि मैंने टेक्स्ट मानों का संकेत दिया है मूल्य से नीचे एक // टिप्पणी के साथ कुछ द्विआधारी तार):

[HKEY_CLASSES_ROOT\.encxml] 
"Content Type"="application/octet-stream" 
@="Account Manager Encrypted XML File" 

[HKEY_CLASSES_ROOT\.encxml\Account Manager Encrypted XML File] 

[HKEY_CLASSES_ROOT\.encxml\Account Manager Encrypted XML File\ShellNew] 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File] 
@="Account Manager Encrypted XML File" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\DefaultIcon] 
@=hex(2):25,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,4d,00,69,\ 
    00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,49,00,6e,00,73,00,74,00,\ 
    61,00,6c,00,6c,00,65,00,72,00,5c,00,7b,00,42,00,36,00,34,00,31,00,37,00,36,\ 
    00,30,00,42,00,2d,00,37,00,44,00,42,00,37,00,2d,00,34,00,46,00,31,00,42,00,\ 
    2d,00,41,00,44,00,36,00,45,00,2d,00,30,00,41,00,33,00,34,00,32,00,30,00,46,\ 
    00,35,00,45,00,45,00,30,00,44,00,7d,00,5c,00,5f,00,36,00,46,00,45,00,46,00,\ 
    46,00,39,00,42,00,36,00,38,00,32,00,31,00,38,00,34,00,31,00,37,00,46,00,39,\ 
    00,38,00,46,00,35,00,34,00,39,00,2e,00,65,00,78,00,65,00,2c,00,30,00,00,00 

// Product code GUID is: {F7F214E9-ED37-4AE1-B0D2-93427973E60A}, which is different from below but I probably changed it at some point for some reason 
// %APPDATA%\Microsoft\Installer\{B641760B-7DB7-4F1B-AD6E-0A3420F5EE0D}\_6FEFF9B68218417F98F549.exe,0 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell] 
@="open" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell\open] 
@="&Open" 

[HKEY_CLASSES_ROOT\Account Manager Encrypted XML File\shell\open\command] 
@="\"C:\\Program Files\\Petroules Enterprises\\Account Manager\\AccountManager.exe\" \"%1\"" 
"command"=hex(7):4c,00,29,00,25,00,59,00,63,00,73,00,67,00,2d,00,4c,00,41,00,\ 
    28,00,30,00,64,00,66,00,34,00,36,00,75,00,5f,00,50,00,27,00,3e,00,27,00,7d,\ 
    00,27,00,66,00,25,00,6f,00,59,00,64,00,4b,00,69,00,48,00,74,00,7a,00,35,00,\ 
    21,00,55,00,2b,00,6c,00,68,00,54,00,20,00,22,00,25,00,31,00,22,00,00,00,00,\ 
    00 

// This is a bizarre-looking value... what's up with that? 
// L)%Ycsg-LA(0df46u_P'>'}'f%oYdKiHtz5!U+lhT "%1" 

[HKEY_CLASSES_ROOT\.whr] 
"Content Type"="application/octet-stream" 
@="Work Hours Record" 

[HKEY_CLASSES_ROOT\.whr\Work Hours Record] 

[HKEY_CLASSES_ROOT\.whr\Work Hours Record\ShellNew] 

[HKEY_CLASSES_ROOT\Work Hours Record] 
@="Work Hours Record" 

[HKEY_CLASSES_ROOT\Work Hours Record\DefaultIcon] 
@=hex(2):25,00,41,00,50,00,50,00,44,00,41,00,54,00,41,00,25,00,5c,00,4d,00,69,\ 
    00,63,00,72,00,6f,00,73,00,6f,00,66,00,74,00,5c,00,49,00,6e,00,73,00,74,00,\ 
    61,00,6c,00,6c,00,65,00,72,00,5c,00,7b,00,46,00,41,00,32,00,33,00,44,00,37,\ 
    00,36,00,34,00,2d,00,46,00,36,00,34,00,39,00,2d,00,34,00,38,00,46,00,39,00,\ 
    2d,00,38,00,44,00,30,00,42,00,2d,00,45,00,31,00,38,00,38,00,35,00,41,00,39,\ 
    00,38,00,31,00,46,00,39,00,39,00,7d,00,5c,00,5f,00,36,00,46,00,45,00,46,00,\ 
    46,00,39,00,42,00,36,00,38,00,32,00,31,00,38,00,34,00,31,00,37,00,46,00,39,\ 
    00,38,00,46,00,35,00,34,00,39,00,2e,00,65,00,78,00,65,00,2c,00,30,00,00,00 

// Product code GUID: {FA23D764-F649-48F9-8D0B-E1885A981F99}, same as below 
// %APPDATA%\Microsoft\Installer\{FA23D764-F649-48F9-8D0B-E1885A981F99}\_6FEFF9B68218417F98F549.exe,0 

[HKEY_CLASSES_ROOT\Work Hours Record\shell] 

[HKEY_CLASSES_ROOT\Work Hours Record\shell\open] 
@="&Open" 

[HKEY_CLASSES_ROOT\Work Hours Record\shell\open\command] 
@="\"C:\\Program Files\\Petroules Enterprises\\Work Hours Calculator\\WorkHoursCalculator.exe\" \"%1\"" 
"command"=hex(7):28,00,5d,00,56,00,49,00,79,00,55,00,7b,00,5e,00,4e,00,3f,00,\ 
    26,00,68,00,48,00,7e,00,53,00,24,00,6e,00,31,00,36,00,59,00,3e,00,33,00,75,\ 
    00,5f,00,7d,00,47,00,26,00,70,00,79,00,75,00,78,00,38,00,4e,00,72,00,43,00,\ 
    6e,00,67,00,27,00,44,00,67,00,42,00,20,00,22,00,25,00,31,00,22,00,00,00,00,\ 
    00 

// Same bizarre-looking type of value as before, but different... 
// (]VIyU{^N?&hH~S$n16Y>3u_}G&pyux8NrCng'DgB "%1" 
+0

देखें http://stackoverflow.com/questions/69761/how-to कुछ कोड परियोजनाओं के लिए -ऑसिटेट-ए-फाइल-एक्सटेंशन-टू-द-वर्तमान-निष्पादन योग्य-इन-सी जिन्होंने इसे सफलतापूर्वक किया है। यहां तक ​​कि यदि आप सी # में कोड नहीं करते हैं, तो भी आप यह पता लगाने के लिए कोड पढ़ सकते हैं कि वे इसे कैसे करते हैं। –

+0

क्षमा करें रॉबर्ट लेकिन यह गलत है। विंडोज इंस्टालर एक घोषणात्मक प्रोग्रामिंग मॉडल एक अनिवार्य नहीं है। एक सी # उदाहरण को देखते हुए और इसे अनुकरण करने के लिए एमएसआई दुनिया में प्रक्रिया antipattern से बाहर एक fagile माना जाएगा। –

उत्तर

2

Windows इंस्टालर में हम RegisterExtensionInfo मानक कार्रवाई का उपयोग करें:

http://msdn.microsoft.com/en-us/library/aa371156(v=VS.85).aspx

उपयोग करता है जो मुख्य रूप से अपने साथ कुछ कॉम से संबंधित टेबल मिलती है साथ विस्तार और क्रिया तालिकाओं का उपयोग करता है:

http://msdn.microsoft.com/en-us/library/aa368571(v=VS.85).aspx (एक्सटेंशन तालिका) http://msdn.microsoft.com/en-us/library/aa372487(v=VS.85).aspx (क्रिया तालिका)

संबंधित मुद्दे