दिलचस्प पोस्ट
मुग़ूज़ को उप-दस्तावेज सरणी वस्तुओं के लिए _id गुण बनाने से रोकें यूआरएल पथ में डॉट का मतलब क्या है? मैं model.save पर सफलता कॉलबैक कैसे ट्रिगर करूँ? JSON और असमर्थित क्षेत्रों से निपटने मैं meteor.com पर एक उल्का ऐप में नोड मॉड्यूल को कैसे लागू कर सकता हूं? क्या यह गैर-स्थिरता मानक पुस्तकालय कार्यों को constexpr के रूप में व्यवहार करने के लिए एक अनुरूप कम्पाइलर एक्सटेंशन है? जावा में रननाबल और कॉलबल इंटरफेस के बीच अंतर SLComposeViewController साझा करने के लिए ट्यूटोरियल संदर्भ रूट नाम को बिना बिना सापेक्ष पथ का उपयोग कैसे करें? प्रक्रिया संभालती कैसे गणना करना है? \ == / 2 या dif / 2 का उपयोग करना जावा स्विंग में JTextField से मूल्य कैसे प्राप्त करें? प्रिंट पीडीएफ सीधे जावास्क्रिप्ट से क्या कंसल्टर्स जावा में अपवाद फेंक सकते हैं? क्या वास्तव में एसटीएल में एक डेक है?

किसी प्रोग्राम में एक एक्सटेंशन को जोड़ने के लिए स्क्रिप्ट

मेरा ग्राहक एमएस ऑफ़िस को ओपनऑफिस के साथ कुछ वर्कस्टेशंस में बदल रहा है। मेरा प्रोग्राम .xml एक्सटेंशन (खुले प्रारूप का उपयोग करके) का उपयोग करके Excel को एक फ़ाइल निर्यात करता है और वर्तमान संबद्ध प्रोग्राम (ShellExecute का उपयोग करके) खोलता है

समस्या यह है कि OpenOffice इसके साथ संबद्ध .xml एक्सटेंशन को पंजीकृत नहीं करता है।

मैन्युअल एसोसिएशन ठीक काम करती है, लेकिन मैं .reg या कुछ को आसानी से सेटिंग बदलना चाहता हूं।

मैं एक पीसी में रजिस्ट्री में पहले से ही किए गए परिवर्तन के साथ देख रहा हूँ, लेकिन

"HKEY_CLASSES_ROOT\.xml" 

कुंजी में ओपन ऑफिस को संदर्भित करने के लिए कुछ भी नहीं है

संघ कहां संग्रहीत है? मैं काम करने के लिए एक स्क्रिप्ट कैसे कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "किसी प्रोग्राम में एक एक्सटेंशन को जोड़ने के लिए स्क्रिप्ट"

वास्तविक एसोसिएशन को कुंजी में रखा जाता है जो "HKEY_CLASSES_ROOT\.xml" इंगित करता है।

मेरी मशीन पर, उस कुंजी का डिफ़ॉल्ट मान "xmlfile" कहता है, यह संभवतः आपके लिए समान है

तो चलो "HKEY_CLASSES_ROOT\xmlfile" वहां आप देख सकते हैं (और बदल सकते हैं) उस प्रकार की फ़ाइल को लॉन्च करने के लिए कौन सी कमांड का इस्तेमाल किया जा रहा है:

 HKEY_CLASSES_ROOT\xmlfile\shell\open\command 

विंडोज एक ही फाइल प्रकार के लिए एकाधिक फ़ाइल एक्सटेंशन मैप करने के लिए इस तरह के पुनर्निर्देशन का उपयोग करता है, और इस प्रकार एक ही आवेदन के लिए।

"HKEY_CLASSES_ROOT\xmlfile\shell" अंतर्गत कई उप-कुंजियाँ हैं जो फ़ाइल के लिए आप कर सकते हैं के "क्रियाएँ" के समान हैं। फिर, "shell" कुंजी का डिफ़ॉल्ट मान यह तय करता है कि यदि आप फ़ाइल पर डबल क्लिक करते हैं तो इन क्रियाओं का उपयोग किया जाता है मेरे मामले में यह "open"

निष्कर्ष:

उस ज्ञान के साथ, संघ द्वारा लिखित स्क्रिप्ट बनाने का सबसे आसान तरीका यह है कि एक। Reg फाइल को निर्यात करने के लिए regedit का उपयोग करना है, जो उस परिवर्तन को लक्षित करता है, और उसे डबल क्लिक या लक्ष्य कंप्यूटर पर लागू होता है:

 regedit /s new_xml_association.reg 

या (यदि आप XP या उच्चतर पर हैं और पता है कि आप क्या करते हैं) मौजूदा मूल्य को इसके साथ ओवरराइट करें:

 reg add "HKEY_CLASSES_ROOT\xmlfile\shell\open\command" /ve /d "path\to\program %1" 

किसी भी दर पर, reg add/? में एक गहरी देखो reg add/? कमांड की सलाह दी जाती है पहला समाधान सुरक्षित है

डॉस कमान assoc पर विचार करें:

सी:> एशॉक /? फ़ाइल एक्सटेंशन संघों को दिखाता या संशोधित करता है

एएसएसओसी [.ext [= [फ़ाइल प्रकार]]]

.ext फ़ाइल प्रकार को फ़ाइल प्रकार से संबद्ध करने के लिए फ़ाइल एक्सटेंशन निर्दिष्ट करता है फ़ाइल एक्सटेंशन के साथ संबद्ध करने के लिए फ़ाइल प्रकार निर्दिष्ट करता है

मौजूदा फाइल संघों को दिखाने के लिए पैरामीटर के बिना एएसएसओसी टाइप करें। अगर एएसएसओसी को केवल एक फ़ाइल एक्सटेंशन के साथ लागू किया जाता है, तो वह उस फाइल एक्सटेंशन के लिए वर्तमान फ़ाइल एसोसिएशन प्रदर्शित करता है फ़ाइल प्रकार के लिए कुछ भी निर्दिष्ट नहीं करें और कमान फाइल एक्सटेंशन के लिए संबद्धता को हटा देगा।

इस मामले में फाइल एसोसिएशन का प्रयोग करना गलत काम करने जैसा लगता है आप चाहते हैं कि आपका एप्लिकेशन ओपनऑफिस में फाइल खोल सके लेकिन क्या होगा अगर आपका उपयोगकर्ता एक्सएमएल फाइलों के लिए फाइल एसोसिएशन को छोड़ना चाहता है? क्या होगा यदि उनके सिस्टम पर कुछ भी उस सहयोग पर निर्भर करता है? आप उस स्थिति में अपने सिस्टम को तोड़ रहे हैं यदि आप आईटी व्यक्ति हैं तो शायद यह ठीक है (अभी भी संदिग्ध प्रोग्रामिंग अभ्यास), लेकिन यदि ऐसा नहीं है तो यह करना एक बुरी बात है।

इसके बजाय फ़ाइल खोलने के लिए OpenOffice COM कार्यान्वयन का उपयोग करें।

यहां सरल उदाहरण: http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html

मैं एक ही जवाब के लिए खोज के दौरान इस पार आया था। मुझे Windows FindExecutable API का उपयोग करते हुए एक बेहतर समाधान मिला है, जिसे PInvoke का उपयोग करके सी # से उपयोग किया जा सकता है।

http://www.pinvoke.net/default.aspx/shell32.findexecutable