|
分類:[VB.NET/VB2005 以降]
VB2017を使用
x86で動作しているアプリから Registry.LocalMachine.OpenSubKey("SOFTWARE\(ソフト名)")とすれば、 実際のレジストリキーが
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\(ソフト名)
であっても上記キーを参照することができます。(64bitOSの場合)
これはそういう仕組みが予め用意されているのだと思います。 逆に、x64で動作するアプリから Registry.LocalMachine.OpenSubKey("SOFTWARE\(ソフト名)")とすると、
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\(ソフト名)
は参照できない(WOW6432Nodeでないものを参照)という理解で よろしいのでしょうか?
実は、Excelのアドイン(VSTO)を作成していて、 このアドインから別の32bitアプリのレジストリを参照したいと思ったのですが、 x64のExcelのアドインからだと、WOW6432Nodeのパスを指定しないと 対象レジストリキーにアクセスできなかったので、今回の質問をしました。
結局、x86, x64どちらでもWOW6432Node配下のレジストリキーを取得できるようにするには、 Registry.LocalMachine.OpenSubKey("SOFTWARE\(ソフト名)")でダメだったら Registry.LocalMachine.OpenSubKey("SOFTWARE\WOW6432Node\(ソフト名)")を行う、 という方法しかないのでしょうか?
|