Open棟梁Project - マイクロソフト系技術情報 Wiki
Office サーバー サイド オートメーションの危険性について
http://blogs.msdn.com/b/office_client_development_support_blog/archive/2012/04/12/1-office.aspx
サーバー サイド オートメーションとは、正確には、
「非対話型のセッション、ウィンドウ・ステーション、デスクトップで
起動されたアプリケーションからのOfficeオートメーション」
であり
など、サーバーサイドのコードから
Officeオートメーションを起動する事を言う。
簡潔に言ってOfficeが
非対話型のセッション、ウィンドウステーション、デスクトップ上
で実行される事を想定して設計実装されていないため。
Office のサーバーサイド オートメーションについて
http://support.microsoft.com/kb/257757/ja
現在のすべてのバージョンの Microsoft Office は、
クライアント ワークステーション上でエンドユーザー製品
として実行するように設計、テスト、および構成されています。
これらの製品では、
を想定しています。
無人実行されるように設計されたサーバーサイド コンポーネントの必要性
を満たすのに必要なレベルの再入可能性やセキュリティは提供されません。
このためサーバ上での実装に限定されず、通常のクライアント環境で
対話型ウィンドウ・ステーション以外の非対話型ウィンドウ・ステーション
からOfficeオートメーションが起されるような実装を行ったとしても、
この処理はサポートされない。
例:タスク スケジューラによって SYSTEM アカウントの下で
実行されるコードから実行されるOfficeオートメーション
以下、詳細
多くのサービスは、ユーザー プロファイルがないアカウント
(SYSTEM アカウント、IWAM_[servername] アカウントなど)で実行されます。
そのため、起動時に Office が適切な初期化に失敗する場合があります。
参考情報
[loadUserProfile?]
Specifies whether IIS loads the user profile for an application pool identity.
When set to True, IIS loads the user profile for the application pool identity.
Set to False when you require IIS 6.0 behavior.
何らかのオートメーション機能を適切に実行するために、
アプリケーションには表示が必要になることがあります。
ユーザーに操作内容を確認する
「モーダル ダイアログ ボックス」
が表示されるように設計されています。
非対話型デスクトップでのモーダル ダイアログ ボックスは閉じることができません。
これが原因となり、そのスレッドが応答しない (ハング) ままになります。
参考情報
Office アプリケーションは、リソースを多用する各種機能を
単一のクライアントに提供するように設計された、
再入不可能な、STA ベースのオートメーション サーバーです。
(STA:生成したスレッドのみが使用できるタイプのCOM)
このため、マルチクライアント環境下で利用する場合は競合が発生する可能性があるため
Office アプリケーションへのアクセスの "プール" またはシリアル化を検討して、
デッドロックまたはデータ破損の可能性を回避する必要がある。
エンドユーザー製品としての Office の障害許容力を高める
Microsoft Windows インストーラ (MSI) テクノロジによる自己修復機能が
等の理由から安定性を損なう。
以下の理由で採用され易い方式となっています。
Office サーバー サイド オートメーションの殆どのケースが
Office ドキュメントの作成と編集(または印刷)であると言う。