64bit OSに対して32bitプログラムでレジストリに値を書き込むと、64bit版のレジストリエディタでは「HKEY_LOCAL_MACHINESoftwareWOW6432Node」に値が保存されます。32bitのレジストリエディタからは通常通りの値に見えます。

- [64 ビット バージョンの Windows でシステム レジストリを表示する方法](http://support.microsoft.com/kb/305097/ja)

System Center Configuration Managerにてレジストリの中に書き込まれている値をインベントリで収集する場合にこの部分が混乱の元になります。

また、クライアントにインストールされるエージェントは基本的に以下のようになります。

- 32ビットOSにインストールされるエージェントは32ビット
- 64ビットOSにインストールされるSCCMのエージェントは64ビット

どちらのバージョンのエージェントが動いているかはタスクマネージャーでccmexec.exeを確認すれば確認する事ができます。

32bitでレジストリに値を書き込むようにしておき、それを64bitのクライアントから読もうとすると読めない!というような事になってしまう可能性があります。

対策としては、32bit、64bitにかかわらずレジストリの同じ場所に値が書き込まれるべきで、.net frameworkで作成されているプログラムであれば、これはプロジェクトのビルド設定でプラットフォームターゲットを「Any CPU」に設定すればOKです。

Image(3)

32bitOS上のVisual Studioで新規にプロジェクトを作った状態だと、この値はx86に設定されていました。注意が必要だと思います。