特定のレジストリキーのレジストリを読み取るMSBuildタスクを作成しています。コンソールアプリケーションで同じコード行(以下を参照)を記述した場合、期待どおりの結果が返されますが、MSBuildタスク内にある場合は何も返されません。
Return Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\", "SQLPath", Nothing)
Nothing
キーと値のペアが存在しない場合は上記のコードが返され、存在する場合は値が返されると思います。Nothing
MSBuildタスクが実行されたときに取得しています。レジストリを読み取る必要があることをMSBuildタスクの実行関数に適用する必要がある属性はありますか?
編集:
MSBuildタスクから実行されているものは次のとおりです。
Return Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSSQLServer\Setup\", "SQLPath", Nothing)
これは、32ビットでMSBuildを実行しているVistax64マシンのレジストリリダイレクターが原因であると考えています。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\
カスタムMSBuildタスク(VB .Netで記述されている)に、そこに何も存在しない場合にのみ調べるように指示できる方法はありますHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSSQLServer\Setup\
か?
ありがとうございました、
スコットブルー