DOBON.NET DOBON.NETプログラミング掲示板過去ログ

レジストリ値の読み書き

環境/言語:[VB.NET]
分類:[.NET]

レジストリの読み書きで種類がREG_FULL_RESOURCE_DESCRIPTORの読み書きの仕方が
分かりません。
調べると「リソース一覧を格納するネストした配列」とあり意味が分かりませんでした。
試しに、Byte配列に読み込もうとしても失敗しました。

一体どのようにアクセスすればいいのでしょうか?
Registry クラス / RegistryKey クラスで GetValue したときは Nothing が返るみたいですね。
となると Win32API の RegQueryValueEx やらを使って値取得ってことになりそうです。
ただ、幾つかサイトを調べたところ、システムとデバイスドライバが使うだけの非公開種別でいじっちゃ駄目よ、みたいな論調でしたので、すっぱり無視してもいいんじゃないかなと思います。
早速のお返事有難うございます。

> デバイスドライバが使うだけの非公開種別でいじっちゃ駄目よ、みたいな論調でしたので、すっぱり無視してもいいんじゃないかなと思います。

実際のところこのレジストリを使用しているソフトウェアでは、この値をデバイスドライバ用途で
使用していないのでなんとかならないかなと思っています。
また、レジストリのエクスポートで作成したファイルを改変し、インポートさせ期待通りの
結果を引き出せることは確認済みなので手動で変更しても問題ないかと思っています。
ちなみにはっきり言ってしまえばあるゲームの進行状況を管理している値なのです。(オンラインゲームではありません。)

多少裏技的な方法、例えばRegEditに対象の値をエクスポートさせそこから値を読み、
インポートファイルを自前で作成し実行、でもいいのですが
1. RegEditにエクスポートさせる方法
2. インポート時にダイアログが出てしまう
で、詰まってしまっています。
済みません、RegQueryValueExについて言及していませんでした。
こちらは現在試してみて、データが取得できるか確認してみたいと思います。
RegQueryValueExについて試してみました。

結果から言うと大成功でした。見事Byte配列内に目的のデータが格納されました。
途中関数がうまく動かず(エラーしか返さないので)これはRegQueryValueExについての質問に移行しちゃうかも?
と思いましたが、初心に戻って0から書き直したところうまく行きました。
(たぶん、定数の値が間違っていた可能性が大です。)

データの取得については出来ましたので、データのセットについてなのですが
たぶんRegSetValueExにて出来ると思いますのでこれにて〆たいと思います。

Hongliang様、本当に有難うございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板