DCOM を使用して Excel を実行する際の実行ユーザーアカウントを強制的に変更する

【概要】

通常 DCOM を使用して Excel オブジェクトを扱った場合、Excel の実行権限はプログラムを実行したユーザーの権限になります。Administrators で実行した場合は Administrators、Users 権限であれば Users, IIS から起動した場合は IIS ユーザー(IIS のバージョンや設定によって名前が変わるので IIS ユーザーとします)となります。

しかし、プログラムの実行ユーザーによって権限がないために本来使用したい機能があったとしても使用できずにエラーになってしまう場合があります。そういう場合は DCOM の実行権限を強制的に特定のユーザーの権限にしてしまう方法があります。

ただし、一般ユーザーであるにもかかわらず Administrators 権限で実行させることもできてしまいますので、セキュリティ観点で十分に注意する必要があります。

【手順】

  1. スタートメニューのプログラムとファイルの検索入力で「dcomcnfg」と入力して「dcomcnfg.exe」を実行
  2. 「コンポーネント サービス」⇒「コンピューター」⇒「マイ コンピューター」⇒「DCOMの構成」を展開し、「Microsoft Excel Application」を右クリックし、「プロパティ」を選択
  3. プロパティが開いたら「ID」タブを選択し、ユーザーから「このユーザー」を選択、実行したときに与える権限を持つユーザーとパスワードを入力

IIS 実行ユーザーで DCOM を使用して Excel を扱う方法 (Windows Server 2008, 2008 R2)

Windows Server 2008 や Windows Server 2008 R2 で ASP.NET プログラムから DCOM を使用して Excel を扱おうとしてもエラーがでて Excel を扱うことができません。これは IIS 実行ユーザーが Excel を使用するために必要なフォルダが Windows Server 2008, 2008 R2 に存在しないために発生する問題です。

IIS の実行ユーザーに依存するので、ASP.NET から直接 Excel を扱う場合や、ASP.NET から起動したプログラム(exe, bat, vbs 等)すべてに影響します。ちなみに Windows Server 2003, 2003 R2 ではフォルダが存在するためこの問題は発生しません。

 

この問題を回避するためには以下の箇所にフォルダを作成する必要があります。

 

[Windows Server が 32bit の場合] 、または [Windows Server が 64bit かつ Office が 64bit の場合]

  • C:WindowsSystem32configsystemprofileDesktop

Windows Server が 64bit かつ Office が 32bit の場合

  • C:WindowsSysWOW64configsystemprofileDesktop