レジストリに書き込む(HKEY_LOCAL_MACHINE) | プログラミングがわからなすぎる

プログラミングがわからなすぎる

気が向いた時の備忘録。プログラミングは好きなのに物凄く単純なものしか理解できないからメモしていくうちに覚えられたらいいな
ターゲットフレームワークは大体4.7.2

前回行ったレジストリ登録はHKEY_CURRENT_USERでしたが

今回はHKEY_LOCAL_MACHINEに登録してみようと思います

 

 

動かすサンプル 

前回とほぼ一緒

 

 

 Form1.cs

using Microsoft.Win32;
using System;
using System.Windows.Forms;

namespace TestApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            using (RegistryKey key = Registry.LocalMachine.CreateSubKey(
                @"SOFTWARE\TestApp\AddReg"))
            {
                key.SetValue("RegName", "レジストリ登録");
            }
        }

    }
}

前回はRegistry.CurrentUserを使用しましたが

今回はRegistry.LocalMachineを使用します

 

動かすと、HKEY_LOCAL_MACHINE\SOFTWARE\TestApp\AddRegに

 名前 :RegName

 種類 :REG_SZ(文字列のやつ)

 データ:レジストリ登録

という値が登録される想定です

 

そういう想定でした

 

 

実行結果 

実行してみると何か例外吐きました

アクセスが拒否ってことは権限がないのかな、このvisual studio2019

 

今開いているvisual studioをいったん閉じて

スタートメニューからvisual studioを右クリックし

管理者として実行します

 

ウィンドウ右上に「管理者」って書いてあるので

ちゃんと管理者モードで起動したみたいです

 

これで実行してみると、通りました

 

前回同様レジストリエディターを探しに行きます

 

…\HKEY_LOCAL_MACHINE\SOFTWARE\配下に\TestAppが無い!

 

と思ったら\SOFTWAREの、\WOW6432Nodeの配下に

\TestApp\AddRegができてました

登録したキーと値も入ってます

 

 

メモ 

レジストリ登録(HKEY_LOCAL_MACHINE)するときの書き方

 

using (RegistryKey key = Registry.LocalMachine.CreateSubKey(@"登録先のパス"))
{
    key.SetValue("名前", 値);
}

 

※HKEY_LOCAL_MACHINEへの登録時は管理者モードで起動しないとダメかも

※\SOFTWARE配下に登録すると\WOW6432Nodeの下に登録される場合あり

 

どういう場合にこんな配置になるのとかはいつかなんか調べてみようと思います…