2011-05-31 19 views
7

मैं विंडोज 7 में विशिष्ट फ़ाइल एक्सटेंशन के लिए डिफ़ॉल्ट फ़ाइल एसोसिएशन को बदलने का एक तरीका खोजने का प्रयास कर रहा हूं। मेरे पास एक ऐप है जिसका उपयोग .tif फ़ाइलों को देखने के लिए किया जाता है, जो मैं उपयोगकर्ता को संकेत देना चाहता हूं यदि यह नहीं है उस फ़ाइल के लिए डिफ़ॉल्ट दर्शक प्रकार। अगर वे इसे डिफ़ॉल्ट बनाना चुनते हैं, तो मैं वर्तमान डिफ़ॉल्ट व्यूअर को ओवरराइड करना चाहता हूं। सिस्टम पर कोई अन्य दर्शक स्थापित नहीं होने पर यह ठीक काम करता है। जब एक और दर्शक है कि उपयोगकर्ता द्वारा चयनित किया गया है वहाँ है, मैं रजिस्ट्री कुंजी को नियंत्रित करता है कि यहाँ कि नहीं बदल सकते :क्या कोई फ़ाइल प्रकार एसोसिएशन लेने के लिए "UserChoice" रजिस्ट्री कुंजी प्रोग्रामेटिक रूप से सेट करने का कोई तरीका है?

 
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tif\UserChoice 

मैं वेब किसी कि इस किया है खोजने की कोशिश कर घूमते है, लेकिन कोई नहीं लगता है कोई जवाब है। जब मैं इस कुंजी के भीतर "प्रोगिड" मान को अपडेट करने का प्रयास करता हूं, तो मुझे "रजिस्ट्री कुंजी पर नहीं लिखा जा सकता" या "अनुरोधित रजिस्ट्री एक्सेस अनुमति नहीं है" त्रुटियां प्राप्त होती हैं। कोड काफी सरल है:

var path = @"Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tif\UserChoice"; 
var key = Registry.CurrentUser.OpenSubKey(path, true); 
key.SetValue("Progid", "myprogid..."); 

वहाँ इस कुंजी है कि यह किया जा रहा से रोकता है पर कुछ विशेष सुरक्षा प्रोग्राम के रूप में संपादित है?

+0

क्या आपने इसे अपडेट करने का प्रयास किया है, उदाहरण के लिए एक कंसोल एप्लिकेशन में, जिसे आप व्यवस्थापकीय विशेषाधिकारों के साथ चलाते हैं? – ChristiaanV

+0

यह एक डेस्कटॉप ऐप है, जो खुद के रूप में चल रहा है लेकिन व्यवस्थापक विशेषाधिकारों के बिना। वह मेरा अगला कदम था। – Jason

+0

व्यवस्थापक के रूप में चलने से मदद नहीं मिली। – Jason

उत्तर

0

ऐसा लगता है कि यह बदलने योग्य नहीं है लेकिन आप UserChoice हटा सकते हैं।

1

कुंजी उपयोगकर्ता विकल्प को लिखने में सक्षम होने के लिए आपको लिखने से पहले कुंजी का स्वामित्व लेने की आवश्यकता है (जैसे this कोड - सी # (सी ++) में नहीं, लेकिन मुझे लगता है कि यह वही किया जा सकता है)।

आप कुंजी पर लिखने में सक्षम होंगे, और आपका फ़ाइल एसोसिएशन कोड काम करेगा!

संपादित करें: भी Registry Key Security and Access Rights on MSDN

0

आप किसी तरह से इस assoc और ftype कमांड लाइन उपकरण की कोशिश करने के लिए पता लगा नहीं किया है। ध्यान दें कि आपको उन्हें व्यवस्थापकीय विशेषाधिकारों के साथ चलाने की आवश्यकता होगी।

  1. एक बैच स्क्रिप्ट Assoc और Ftype का उपयोग करता है फ़ाइल संबद्धता निर्धारित बनाने के लिए।
  2. बैच स्क्रिप्ट निष्पादित करने के लिए System.Diagnostics.Process का उपयोग करें। Managing Files from the Command Line- Assoc and Ftype:

    ASSOC .txt=TXTFileWordPad  
    FTYPE TXTFileWordPad="%ProgramFiles%\Windows NT\Accessories\wordpad.exe" %%1 
    

    कैसे इन उपकरण का उपयोग करने के बारे में अधिक जानकारी के लिए पर एक नजर है:

आप मूल रूप से एक .bat बनाने के लिए (या .cmd) निम्नलिखित लाइनों के साथ दायर की है।