web-dev-qa-db-ja.com

asp.netを介してOffice Wordオブジェクトモデルにアクセスすると、「次のエラーのために失敗しました:80070005アクセスが拒否されました。」

ユーザーがオフィスドキュメントをアップロードし、オフィスオブジェクトモデルを使用してドキュメントをHTMLファイルに変換し、iFrameに表示できるWebサイトを開発しました。

もちろん、Office.interop.Wordへの参照を含めましたが、このサイトは開発マシンで正常に機能します。本番サーバーにアップロードすると、ドキュメントをアップロードしようとするまでサイトは正常に機能します。最初に、「COMオブジェクトが登録されていません」という同様のエラーが表示されました。 Wordが運用サーバーにインストールされていないことに気付きました。だから私はWordをインストールしましたサーバーがWordオブジェクトモデルにアクセスしようとすると、次のエラーが表示されます:

次のエラーのため、CLSID {000209FF-0000-0000-C000-000000000046}のコンポーネントのCOMクラスファクトリを取得できませんでした:80070005アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))

レジストリで対応するCLSIDを検索し、対応するフォルダーを見つけました。 IUSR_アカウントにフルコントロールを追加し、エラーが持続するため、最終的に「全員」にフルコントロールを追加し、これらのアクセス許可がフォルダの残りの部分に継承されるようにしました。次に、IUSR_にフルコントロールを追加し、最終的にMicrosoft Officeフォルダーの「全員」にフルコントロールを追加しました。

I この「アクセスが拒否されました」というエラーを解消するために、他にどの許可を許可するかわからない。私が知る限り、間違った場所で許可しなければならない「全員」「フルコントロール」よりも寛容になりません。

誰もが光を当てることができますか?

48
Camenwolf

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

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

わかりました、私はこのステップでこの問題を解決しました:

  1. コマンドラインにDCOMCNFGを入力します
  2. [コンソールルート]> [コンポーネントサービス]> [コンピューター]を展開し、[マイコンピューター]を右クリックして、[プロパティ]を選択します。
  3. [COMセキュリティ]タブで、[起動とアクティブ化のアクセス許可]の[デフォルトの編集]をクリックします。
  4. ユーザー(例:IIS_IUSRS)またはサービスを追加します
  5. [ローカル起動とローカルアクティベーションを許可する]をオンにします

その後、Excel、Word、およびその他のアプリケーションが機能します。幸運を祈ります。

59
sur97c

Wordがインストールされているサーバーマシンの[Windowsログ]、[システム]の下のイベントビューアーを確認します。次のようなイベントを記録しますか?

マシンの既定のアクセス許可設定では、CLSID {148BEE7F-6123-41EE-8CCA-E390902BD0D8}のCOMサーバーアプリケーションのローカルアクティブ化アクセス許可がユーザーSomeMachine\SomeUser SID(S-1-5-21-483881670-2168941642- 1987552629-1003)アドレスLocalHostから(LRPCを使用)。このセキュリティ許可は、コンポーネントサービス管理ツールを使用して変更できます。

その場合は、DCOMCNFG.EXEを実行し、コンポーネントサービス、コンピューター、マイコンピューター(または任意の名前)、DCOM Config(何か修正するかどうかを尋ねられた場合は「いいえ」と答えます)およびイベントログメッセージはapplicationの場合、イベントログメッセージ内の名前、ここではアイテム名で検索し、イベントログメッセージがCLSIDの場合(上記の例のように)、 CLSID "{148B ...}"(これは私が貼り付けたランダムなCLSIDです。おそらく上記の000209FF ...と一致します)、[セキュリティ]タブの[その他のアクション...プロパティ]を選択します。

ここで、[x] [カスタマイズ]を選択してから[編集]を選択して、適切なユーザーアカウントにアクセス許可を追加し、必要なDCOMアプリケーションまたはクラスにアクセスします。

それは単なる推測ですが、試してみるか、これらの線に沿って何かを与えます(つまり、DCOMCNFGを介してCLSIDへのアクセスを許可します)。

12
Jim Flood

Microsoft Word 97-2003 DocumentレコードがDCOM構成アイテムにリストされていなかったため、受け入れられた答えを使用してこれを理解するのに苦労しました。 このTechnetブログの投稿 で解決策を見つけました。そこで彼らは問題を正しく説明しました:

64ビットマシンに32ビットMicrosoft Officeをインストールする場合、オペレーティングシステムによっては、32ビットDCOM構成マネージャーを使用してプログラムを表示する必要がある場合があることに注意することが重要です。

Windowsからのx64オペレーティングシステムXP to Windows Server 2008では、DCOMCNFG.EXEの64ビットバージョンは、32ビットDCOMアプリケーションをリモートアクティベーション用に正しく構成しません。この動作により、この動作は、Windows 7およびWindows Server 2008 R2以降のバージョンでは発生しません。

参照: http://msdn.Microsoft.com/en-us/library/windows/desktop/ms678426(v = vs.85).aspx

また、(DCOMCNFGの代わりに)次のコマンドラインコマンドを効果的な修正として使用することも提案されました。

mmc comexp.msc /32

これにより、64ビットの代わりに32ビットのDCOM構成マネージャーが強制的に読み込まれ、受け入れられた回答内で説明されている手順を実行できます。それでも解決しない場合は、他の考えられる回避策についても説明しています。

このトピックに関する詳細については、ブログで この投稿を読む をご覧ください。

5
Darkseal

DCOMでMicrosoft Wordアプリケーションが見つからない場合

32ビットOfficeを備えた64ビットシステムでは、これを試してください。

  1. リストアイテム
  2. 開始
  3. 走る
  4. mmc-32
  5. ファイル
  6. 追加削除スナップイン
  7. コンポーネントサービス
  8. 追加する
  9. OK
  10. コンソールルート
  11. コンポーネントサービス
  12. コンピューター
  13. 私のコンピューター
  14. DCOM構成

その後

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