web-dev-qa-db-ja.com

System.UnauthorizedAccessException:Word InteropのCOMクラスファクトリの取得がエラー80070005で失敗する

Visual Studio 2008のC#ASP .NETプロジェクトに問題があります。この問題は、Windows 7 Ultimate(x64)を使用してコンピューターを再インストールしたときに始まりました。

私が得ているエラーメッセージは次のとおりです。

System.UnauthorizedAccessException:次のエラーのため、CLSID {000209FF-0000-0000-C000-000000000046}のコンポーネントのCOMクラスファクトリを取得できませんでした:80070005. at xxx.Utility.WordDocument..ctor(String filePath、HttpServerUtility util)at customer_communication.BuCreate_click(Object sender、EventArgs e)in c:\ xxx\Website\customer\communication.aspx.cs:line 127

32
Tomas I

この問題に対する私の修正:

Win 7 64ビットとOffice 2007を使用しています

プログラム「dcomcnfg -32」を実行します。 (64ビットで実行されている場合、WordおよびExcelコンポーネントを見つけることができません)

「コンソールルート/コンポーネントサービス/コンピューター/マイコンピューター/ DCOM構成/」に進みます。MicrosoftWordとExcelを検索し、プロパティを選択します。

[セキュリティ]に移動し、[構成のアクセス許可]で[カスタマイズ]を選択します(必要に応じて、他のアクセス許可も変更したい場合がありますが、変更する必要はありません)。

「ID」に移動して、「インタラクティブユーザー」を選択します。

完了したら「OK」を押すことを忘れないでください。 :D

これがあなたの問題、そしてここに来てこれを読む他の人にも役立つことを願っています.

33
Tomas I

ASP.NETプロセスIDのWord COMコンポーネントへのアクセスを許可する必要があります({MACHINE}\ASPNET on IIS 5またはNetwork Service on IIS 6):

「コントロールパネル-管理ツール-コンポーネントサービス-コンピューター-マイコンピューター-DCOM構成」

"Microsoft Word Document"、右クリック-[設定]-[セキュリティ]タブ、ASP.NETプロセスIDのアクセス(ローカルおよびリモート)を許可します(IIS = 5、IIS 6)の「ネットワークサービス」。


「System.Runtime.InteropServices.COMException(0x800A13E9):メモリが不足しています。今すぐドキュメントを保存してください。」というメッセージが表示された場合ドキュメントを開く/追加するときの例外(自分の有効期限)、%Temp%および\ Content.Wordフォルダーから一時ファイルを削除するだけです。

8
Serge S.

起動dcomcnfg -32またはdcomcnfg /32両方とも、ターゲットアプリ(Microsoft Excel)をリストに表示できませんでした。

しかし、@ IIS7がOffice InteropでNiceを再生する方法 、特に、起動に関するメモmmc -32およびコンポーネントサービススナップインに手動で追加すると、表示されるようになりました。 (注:リンクはIIS7について説明していますが、私の問題はWindowsサービスに関するものでした)。

  1. スタート>実行> dcomcnfg(または「mmc -32」、手順3でアプリが見つからない場合はコンポーネントサービススナップインを手動で追加します)
  2. [コンポーネントサービス]> [コンピューター]> [マイコンピューター]> [DCOM構成]に移動します。
  3. 問題のあるMSアプリケーションを見つけます(例:Excelの場合は「Microsoft Excel Application」、Wordの場合は「Microsoft Word 97 – 2003 Document」)
  4. 右クリック>プロパティ
  5. [セキュリティ]タブで、[起動とアクティブ化のアクセス許可]で[カスタマイズ]を選択し、[編集…]をクリックします
  6. サイトを実行しているアカウント(例:ネットワークサービス)を追加し、ローカル起動とローカルアクティベーションのアクセス許可を割り当てます。
  7. 出来上がり!
5

これは私のために働いた:

  1. コマンドラインにDCOMCNFGを入力します
  2. コンポーネントサービス->コンピューター->マイコンピューター-> DCOM Config
  3. 「Microsoft Word 97-2003 Document」を探します(見つからない場合は、Wordも64ビットかどうかを確認します)
  4. 右クリック->プロパティ
  5. [セキュリティ]タブに移動し、[カスタマイズ]ラジオボタンを編集して、IIS_IUSRSが起動とアクセスの権利を持つようにします
  6. タブIDに移動し、「インタラクティブユーザー」を選択します
  7. 変更を適用してもう一度お試しください
  8. これがすべて失敗した場合は、[全般]タブに移動し、[認証レベル]ドロップダウンで[なし]を選択します。
5
gyosifov

これは私が理解するのが難しいものでした。多分、私のWindowsモジョのスキルは単に劣っています。しかし、Windows Server 2008でコンポーネントサービスを32ビットモードで実行することはできませんでした。これが同じ問題を抱えている他の人の助けになることを願っています。

  1. 前述のいずれかの方法(実行ボックスまたは管理ツール)でコンポーネントサービスを実行します。このプログラムを閉じます
  2. [C:\ Windows\System32\mmc.exe]/32を[実行]ボックスに貼り付け、Enterキーを押します(mmc.exe * 32が表示されていることをタスクマネージャーで確認します)
  3. (ファイル)に移動すると、リストにcomexp.mscが表示され(手順1のため)、それを選択すると、32ビットモードでコンポーネントサービスが開きますMMCコンソール。

編集:完全を期すために、Windows Server 2008でWord Interopを動作させるには、 この回答 で説明されているようにデスクトップフォルダーも作成する必要がありました。

5

Tomasの答えを修正し、Windows Server 2k8 x64での正しいコマンドは「dcomcnfg/32」です(-ではなくスラッシュ)

また、IIS_IUSRSを追加して、すべてのセキュリティオプションを、ランチとアクティベーションのアクセス許可、アクセス許可、および構成の許可に対する完全な権利を追加してカスタマイズする必要がありました。 IdentityタブのInteractiveユーザーも同様です。それは私のために働いた。

Word 2010でドキュメントファイルを開くときにこの問題が発生し、Microsoft Word 97-2003ドキュメントプロパティに設定する必要がありました。

2
Krissce

このエラーは.NET System.UnauthorizedAccessExceptionに対応し、通常、コードが作成しようとするCOMコンポーネントのアクセスの設定が間違っていることが原因です。

Dcomcnfgユーティリティを起動し、DCOM設定に移動し、必要なオブジェクトを選択して、ASP.NETコードが実行されているアカウントのアクセスを許可してください。問題を解決するはずです。

1
elder_george

最後に、ユーザーにサービス「Remote Procedure Call(RPC)」を実行する権限がないため、同じ問題が発生しました。コントロールパネルの管理ツールでそのサービスを探し、ログオンで[ローカルシステムアカウント]をクリックし、システムを再起動して問題を解決しました。

レジストリに移動HKCR>TypeLib>{00020905-0000-0000-C000-000000000046}>8.7>0、フォルダを削除します "win32"これはWord COM Classエラー用です。

レジストリに移動HKCR>TypeLib>{00020813-0000-0000-C000-000000000046}>1.9>0、フォルダを削除します "win32"これはExcel COMクラスエラー用です。

私の問題を解決した方法を試してください。

0

回答としてマークされている上記のすべてのメソッドをテストしますが、ユーザーがアクティブまたはログオフしていないときにWindowsサーバーでアクセス例外を取得します。そう:

  1. localコンピューターでユーザーを作成し、2つのグループに追加します:IIS_USERおよびAdministrator
  2. コンポーネントサービス->コンピューター->マイコンピューター-> DCOM Config
  3. Com +オブジェクトでは、このユーザーでMicrosoft Word 97 – 2003 Documentコンポーネントを実行するように変更します。 こちらをご覧ください
  4. また、IIS_USERとアプリケーションIDユーザー(IIS APPPool\[Name])セキュリティセクションの3つのセクションすべてに、可能な限り完全な許可を与えます。 こちらをご覧ください

officeは、最初のステップで作成したユーザーの設定で実行されるため、このユーザーで設定を変更した場合。 120%は問題なく動作しています。 3つの異なるサーバーで試してみました。

0
Mahdi