2009-11-23 9 views
5

पर लिख नहीं सकते कस्टम क्रिया संपादक में मैंने प्रक्रिया के चरणों को स्थापित और अनइंस्टॉल करने के लिए कस्टम कार्रवाई को जोड़ा है।इंस्टॉलर कस्टम एक्शन समस्या - पंजीकरण कुंजी

/TARGETDIR = "[TARGETDIR]" 

मैं आशा करती हूं कि ऊपर कस्टम क्रिया में स्थापना निर्देशिका जानकारी गुजरता है: गुण विंडो में मैं CustomActionData गुण के रूप में चिह्नित किया है।

कस्टम क्रिया फायरिंग किया जा रहा है, लेकिन मैं निम्न त्रुटि संदेश हो रही है:

(या कुछ है कि जैसे "त्रुटि 1001 के रजिस्टर करने के लिए कुंजी नहीं लिख सकता", मैं अनुवाद कर रहा हूँ यह मेरी स्थानीय भाषा से)।

मैं क्या गलत कर रहा हूं?

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Configuration.Install; 
using System.Linq; 
//using System.Windows.Forms; 
using Microsoft.Win32; 

namespace CustomActions 
{ 
    [RunInstaller(true)] 
    public partial class Installer1 : Installer 
    { 
     public override void Install(IDictionary stateSaver) 
     { 
      base.Install(stateSaver); 

      const string key_path = "SOFTWARE\\VendorName\\MyAppName"; 
      const string key_value_name = "InstallationDirectory"; 

      RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path); 

      if (key == null) 
      { 
       key = Registry.LocalMachine.CreateSubKey(key_path); 
      } 

      string tgt_dir = Context.Parameters["TARGETDIR"]; 

      key.SetValue(key_value_name, tgt_dir); 

     } 

     public override void Uninstall(IDictionary savedState) 
     { 
      base.Uninstall(savedState); 

      const string key_path = "SOFTWARE\\VendorName"; 
      const string key_name = "MyAppName"; 

      RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path); 

      if (key.OpenSubKey(key_name) != null) 
      { 
       key.DeleteSubKey(key_name); 
      } 
     } 

     public override void Rollback(IDictionary savedState) 
     { 
      base.Rollback(savedState); 
     } 


     public Installer1() 
     { 
      InitializeComponent(); 
     } 
    } 
} 
+0

मैं "रजिस्ट्री देखें" जहाँ मैं रजिस्ट्री नोड्स को बदलने का उपयोग अपने रजिस्ट्री कुंजियों को स्थापित करने के लिए। –

+0

और आप अपने मूल्यों को बिल्कुल कैसे सेट करते हैं? – Maciek

उत्तर

11

कोशिश को बदलने के लिए:
RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path);

करने के लिए:
RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);

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