*

[.NET, C#]レジストリの値が取得できない原因

公開日: : 最終更新日:2015/01/12 .NET, C#, Microsoft

正しいPathを指定しているのに

Registry レジストリ C# .NET
図のような ‘HKEY_CURRENT_MACHINE\SOFTWARE\HOGE’ のサブキーである ‘HogeSubKey’ というレジストリの値をC#で取得する場合以下のようなソースになります。

string keyName = @"SOFTWARE\HOGE"

using (var rKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(keyName)) {
	try {
		string keyValue = (string)rKey.GetValue("HogeSubKey");
		MessageBox.Show(keyValue);
	} catch (NullReferenceException excep) {
		// キーが見つからないときの処理
	}
}

Pathは明らかに正しく値も確実にあるのですが、しかしNullReferenceExceptionが発生し、値を取得出来ませんでした。

原因は64bitのOSだから!

すっかり忘れていたのですが、OSが64bitに変わっていました。
64bitの場合ですと、ハイブが32bitと異なる場所を参照してしまいます。
ですので、正しく参照するように設定しなくてはなりません。

修正

ソース

string keyName = @"SOFTWARE\HOGE"

using(var reg32 = Microsoft.Win32.RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, Microsoft.Win32.RegistryView.Registry64))
using(Microsoft.Win32.RegistryKey rKey = reg32.OpenSubKey(keyName)) {
	try {
		string keyValue = (string)rKey.GetValue("HogeSubKey");
		MessageBox.Show(keyValue);
	} catch (NullReferenceException excep) {
		// キーが見つからないときの処理
	}
}

実行結果

Hogestring Registry レジストリ
このように32bitのレジストリを参照するようにしてあげると意図した値を取得することが出来るかと思います。

ad

関連記事

unity move

[Unity]コードリファレンス GameObjectを移動する。

移動します。 transformプロパティ GameObjectのtransformプロパテ

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 画面上のGameObjectを取得する

前回の続きです。 というわけで移動の仕方は完璧です。本当なら一瞬で移動ではなく、パズドラみたく

記事を読む

logo

[C#]パスワード暗号化プログラムの初歩

パスワード暗号化の初歩的方法。 子供だましみたいなプログラムですね。 これは入社四か月の頃にプロ

記事を読む

unity moving

[Unity]コードリファレンス Componentを取得する。削除する。

コンポーネントを取得して削除します。 GetComponent コンポーネントの追加と同じよ

記事を読む

unity debug

[Unity]MonoDevelopのデバッグの仕方

コメントで頂いた質問を打破するためにデバッグの仕方でも書いてみます。 まずは、プロジェクトを開

記事を読む

Unity_

[Unity]Unity 2Dチュートリアル スプライトを元の位置に戻す

前回ドラッグして移動するところまでは作成したのですが、パズドラって、タップしてもその場から動かさなか

記事を読む

logo

[Unity]GameObject.Findは遅い

遅いらしいです。 なので、マネージャークラスを作りましょう、というのが風潮らしいです。 マネージ

記事を読む

wannabenote

[Visual Studio]いつもの文章をコピペするぐらいならSnippetizer使いませんか

Visual StudioのSnippetizerって使ってますか。 あれ? 意外に知らん人多いの

記事を読む

logo

[VSTO,Excel,C#]C#のアドインで現在起動しているExcelを取得する。

ExcelのアドインをC#で開発してるんですが、情報少ないですねぇ。 とりあえずMicrosoft

記事を読む

visualstudio_

[visual studio]ODBC等のConnection Stringの簡単な作り方

Connection Stringって大体いつも検索して、それを使ってみて、だめだったりOKだったり

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑