2008-10-17 20 views
9

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

समस्या यह है कि OpenOffice इसके साथ जुड़े .xml एक्सटेंशन पंजीकृत नहीं करता है का उपयोग कर इसे खोलता है।

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

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

"HKEY_CLASSES_ROOT\.xml" 

कुंजी कुछ भी OpenOffice संदर्भित नहीं है।

एसोसिएशन कहाँ संग्रहीत किया जाता है? मैं काम करने के लिए एक स्क्रिप्ट कैसे बना सकता हूं?

उत्तर

17

असली सहयोग उस कुंजी में संग्रहीत है जो "HKEY_CLASSES_ROOT\.xml" अंक है।

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

तो चलिए "HKEY_CLASSES_ROOT\xmlfile" पर जाएं। वहाँ आप देख सकते हैं (और परिवर्तन) है क्या आदेश फ़ाइल के प्रकार शुरू करने के लिए इस्तेमाल किया जाएगा:

HKEY_CLASSES_ROOT\xmlfile\shell\open\command 

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

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

निष्कर्ष:

है कि ज्ञान, regedit का प्रयोग कर एक .reg कि परिवर्तन वाली फ़ाइल निर्यात करने, और एक डबल क्लिक के साथ लक्ष्य कंप्यूटर के लिए इसे लागू करने के लिए या एक संघ स्क्रिप्ट बनाने के लिए सबसे आसान तरीका है के साथ

:

regedit /s new_xml_association.reg 

या (आप XP पर हैं या उच्च और पता है कि यदि आप करते हैं) के साथ वर्तमान मूल्य के ऊपर लिख:

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

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

+0

मेरे पीसी में इस महत्वपूर्ण बिंदुओं के लिए "C: \ Program Files \ Common Files \ Microsoft साझा \ Office12 \ MSOXMLED.EXE"/क्रिया खुला "% 1" लेकिन शायद इस .exe तब ओपनऑफिस कैल्क ऐप खोलें। –

+0

यदि आप इसे लॉन्च करना चाहते हैं तो यह ओपनऑफिस कैल्क ऐप होना चाहिए। "MSOXMLED.EXE" वास्तव में एमएस ऑफिस एक्सएमएल संपादक है जो InfoPath – Tomalak

+0

के साथ आता है यह सुनिश्चित नहीं है कि यह कुंजी है या नहीं। अगर मैं इसे हटा देता हूं, तो डॉबल क्लिक अभी भी काम करता है। –

1

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

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

ASSOC [.ext [= [filetype]]]

।ext फ़ाइल प्रकार संबद्ध करने के लिए filetype वर्तमान फ़ाइल संघों प्रदर्शित करने के लिए पैरामीटर के बिना फ़ाइल विस्तार

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

+0

क्या assoc भी संबंधित आवेदन बदल सकते हैं? क्या यह हमेशा वहां रहा है या यह XP या कुछ नया है? यह मेरे लिए कम से कम नया है ... – Tomalak

+0

"Assoc .xml" रिटर्न ".xml = xmlfile" "Assoc xmlfile" रिटर्न "xmlfile = XML दस्तावेज़" आगे नहीं जा सकता क्योंकि Assoc अंतरिक्ष को स्वीकार नहीं करता –

+0

@Eduardo आप अंतरिक्ष उद्धृत करने में सक्षम होना चाहिए। – kenny

-1

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

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

+0

आगे की जांच पर AssocQueryString का उपयोग करना बेहतर है, जिसे लुकअप के लिए एक भौतिक फ़ाइल की आवश्यकता नहीं है: http: //www.pinvoke.net/default.aspx/shlwapi/AssocQueryString.html – TheCodeKing

1

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

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

अच्छा सरल यहाँ उदाहरण: http://www.kalitech.fr/clients/doc/VB_APIOOo_en.html

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