C#でレジストリキーを作成するコードを紹介します。
C#でレジストリのキーを作成する場合は、Microsoft.Win32 名前空間の Registry クラスを利用します。
下図のUIを作成します。フォームにテキストボックスとボタン、複数行的とボックスを配置します。
下記のコードを記述します。フォームに配置したbutton1のクリックイベントを実装になります。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace RegistryDemo
{
public partial class FormWriteRegisitry : Form
{
public FormWriteRegisitry()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
string KeyName = textBox1.Text;
Microsoft.Win32.RegistryKey rkey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"SOFTWARE\iPentec\Demo\"+KeyName);
if (rkey!= null) {
textBox2.Text = "OK";
}
}
}
}
\HKEY_CURRENT_USER\SOFTWARE\iPentec\Demo
キー内に作成するコードになります。
textBox1に入力された文字列を KeyName 変数に代入して受け取ります。
string KeyName = textBox1.Text;
\HKEY_CURRENT_USER
をルートキーとするレジストリにキーを作成しますので、Registry.CurrentUser フィールドの CreateSubKey メソッドを呼び出します。CreateSubKey メソッドの第一引数に作成するキーのルートノードからのフルパスを与えます。SOFTWARE\iPentec\Demo\
キー内にテキストボックスに入力された文字のキーを作成します。 Microsoft.Win32.RegistryKey rkey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"SOFTWARE\iPentec\Demo\"+KeyName);
CreateSubKeyは正常に終了すると RegistryKey オブジェクトを返します。オブジェクトが null であれば異常ですので、null出ないことを確認してテキストボックスに"OK"のメッセージを表示します。
if (rkey!= null) {
textBox2.Text = "OK";
}
プロジェクトを実行します。下図のウィンドウが表示されます。
上部のテキストボックスに "Penguin" の文字列を入力します。入力後 [Create RegKey] ボタンをクリックします。
キーの作成が正常に終了すると下部のテキストボックスに"OK"のメッセージが表示されます。
レジストリにキーが作成されているか確認します。レジストリエディタを起動します。
\HKEY_CURRENT_USER\SOFTWARE\iPentec\Demo
キーを開きます。キー内に "Penguin" サブキーが作成されていることが確認できました。
C#のプログラムからレジストリのキーが作成できました。
Microsoft.Win32
を追加すれば、名前空間の明示的指定は不要です。using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Win32; //追加
namespace RegistryDemoNoUAC
{
public partial class FormRegistryWrite : Form
{
public FormRegistryWrite()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
string KeyName = textBox1.Text;
RegistryKey rkey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\iPentec\Demo\" + KeyName);
if (rkey != null) {
textBox2.Text = "OK";
}
}
}
}