Azure ロールのスタートアップ タスクが .cmd ファイルを呼び出しています。
<Startup>
<Task commandLine="startup.cmd" executionContext="elevated" taskType="simple"/>
</Startup>
.cmd ファイルには、次の呼び出しが含まれていますregsvr32
。
//startup.cmd
regsvr32 PathToMyComServer\MyComServer.dll
32 ビットのインプロセス COM サーバーを登録するため。
現在、64 ビット システムには 2 つのバージョンがあります。1 つregsvr32
は 32 ビット COM サーバー用の SysWOW64 フォルダーにあり、もう 1 つは 64 ビット COM サーバー用の System32 フォルダーにあります。もちろんregsvr32
、任意のインプロセス COM サーバーで使用できるのは、一致するバージョンの だけです。
開発用の Windows 2008 ボックスにログインしてregsvr32
コマンド ラインから実行すると、64 ビット バージョンが呼び出されますが、スタートアップ タスクを実行すると (Compute Emulator とライブ クラウドの両方で)、32 ビット バージョンが呼び出され、適切に登録されます。私のインプロセスCOMサーバー。これは私を困惑させます。
32 ビット バージョンのregsvr32
が Azure スタートアップ タスクで呼び出されるのはなぜですか?