C((zhi)レジストリの考え方とコードを書きます。


NETフレームワークは、Microsoft.Win 32の名前空間でレジストリを操作する2つのタイプを提供しています。これらの2つのクラスはいずれも密封類であり、継承は認められない。この二つの種類を紹介します。Registryクラスは、7つの共通の静的領域を提供し、それぞれ7つの基本的なキーを表しています。このうち、2つはXPシステムにはありません。  Registry.lassesrootはHKEY_に対応しています。CLASSES_ROOTキーRegistry.Current UserはHKEY_に対応しています。CURRENT_USERキーRegistry.LocarMachineはHKEY_に対応しています。LOCAL_MACHINEキーRegistry.UserはHKEY_に対応しています。USERキーRegistry.Current ConfigはHEKY_に対応しています。CURRENT_CONFIGキーRegistry.DyndaはHKEY_に対応しています。DYN_DATAキーRegistry.PerformancDataはHKEY_に対応しています。PER FOREMANCE_DATAキーRegistryKey類はレジストリ操作の方法を提供しています。注意すべきはレジストリの操作はシステムの権限に合致していなければなりません。そうでないとエラーが発生します。
サブキーを作成する方法の原型は、public RegistryKey CreateSubKeyです。パラメータsunbkeyは、作成するサブキーの名前またはパス名を表します。作成に成功したら、作成されたサブキーを返します。そうしないとnullに戻ります。サブキーを開く方法の原型は、public RegistryKey OpenSubKeyです。public RegistryKey OpenSubKey(string name,book writable)パラメータnameは開いているサブキーまたはそのパス名を表し、パラメータwritableは開いているサブキーが変更されることを許可しているかどうかを表し、最初の方法で開くサブキーは読み取り専用です。サブキーを削除する方法の原型は、public void DeleteSubKeyです。この方法は、指定されたプライマリキーを削除するために使用されます。削除するサブキーがメインキーを含んでいる場合は削除に失敗し、異常を返します。このサブキーを完全に削除するには、DeleteSubKeyTreeを使用してもいいです。この方法の原型は以下の通りです。public void DeleteSunKeyTree(string subkey)。キーの読み取り方法の原型は以下の通りです。public oject GetValue。public object GetValue;パラメータnameはキーの名前を表し、戻るタイプはobjectタイプで、指定されたキーが存在しない場合はnullに戻ります。失敗して戻りたくない値がnullであればパラメータdefaultValueを指定し、パラメータを指定したら読み込みに失敗した場合にそのパラメータ指定の値を返します。キーの設定方法の原型は以下の通りです。public oject SetValue(string name、object value)。キーを削除する方法の原型は以下の通りです。public void DeleteValue。以下は本人が書いたテストの小例です。運行に間違いはありません。1.書き込み

try
    {
       RegistryKey rsg = null;
       if (Registry.LocalMachine.OpenSubKey("SOFTWARE\\RING").SubKeyCount <= 0)
       {
          Registry.LocalMachine.DeleteSubKey("SOFTWARE\\RING");
          Registry.LocalMachine.CreateSubKey("SOFTWARE\\RING");
       }
       rsg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\RING",true);//true
       //if (rsg.GetValue("TestReg") == null)
       //{
       //    rsg.CreateSubKey("TestReg");
       //}
       //else
       //{
       //    rsg.DeleteSubKey("TestReg");              
       //}
       rsg.SetValue("TestReg", System.DateTime.Now.ToString());
       rsg.Close();
       }
  catch (Exception ex)
      {
         this.label2.Text = ex.Message;
      }
2.読み取り

try
    {
       RegistryKey rsg = null;
       rsg = Registry.LocalMachine.OpenSubKey("SOFTWARE\\RING",true);
       if (rsg.GetValue("TestReg") != null) // null
       {
          this.label2.Text = rsg.GetValue("TestReg").ToString();
       }
       else
          this.label2.Text = " !";
       rsg.Close();
    }
 catch (Exception ex)
    {
       this.label2.Text = ex.Message;
    }