2009-11-23 14 views
5

Özel Eylemler düzenleyicisinde, özel eylemi Sürecin Yükleme ve Kaldırma aşamalarına ekledim. Yukarıda özel eyleme kurulum dizini bilgi geçer umuyorumYükleyici Özel Eylem sorunu - kayıt anahtarı için yazamazsınız

/TARGETDIR = "[TARGETDIR]" 

: özellikler penceresinde ben CustomActionData özelliği işaretledim.

Özel eylem ateşleme gibi görünüyor, ancak aşağıdaki hata iletisini alıyorum:

böyle (ya da bir şey "Hata 1001. anahtar kayıt yazılamıyor" Ben tercüme ediyorum bu benim yerel dilimden).

Neyi yanlış yapıyorum?

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

ben kayıt düğümleri değiştirmek "Kayıt Görünüm" kullanmak benim kayıt defteri anahtarlarını yükleyin. –

+0

Ve değerlerini tam olarak nasıl belirlersiniz? – Maciek

cevap

11

deneyin değiştirmek için:
RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path);

için:
RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);

İlgili konular