5

SOでこの問題を見ていました。System.UnauthorizedAccessException: Word Interop の COM クラス ファクトリを取得すると、エラー 80070005 で失敗します。

Word Interop を動作させるために、テスト サーバーに Word をインストールしました。それがこの新しいバグにつながり、Componenet Services DCOM Config で Microsoft Word が見つかりませんで推奨されている修正を適用できません。では、どうすればこれを修正できますか?

4

4 に答える 4

3

ERR ツールを使用すると、次のエラーが表示されます。

 for hex 0x80070005 / decimal -2147024891 :
  COR_E_UNAUTHORIZEDACCESS                                      corerror.h     
 MessageText: 
 Access is denied.
  DIERR_OTHERAPPHASPRIO                                         dinput.h       
  DIERR_READONLY                                                dinput.h       
  DIERR_HANDLEEXISTS                                            dinput.h       
  DSERR_ACCESSDENIED                                            dsound.h       
  ecAccessDenied                                                ec.h           
  ecPropSecurityViolation                                       ec.h           
  MAPI_E_NO_ACCESS                                              mapicode.h     
  STIERR_READONLY                                               stierr.h       
  STIERR_NOTINITIALIZED                                         stierr.h       
  E_ACCESSDENIED                                                winerror.h     
 General access denied error
 11 matches found for "0x80070005"

この KB 記事に記載されているすべての問題があるため、意図的に言及します: Office のサーバー側の自動化に関する考慮事項

サーバー OS に Office をインストールすると、さまざまな問題が発生します。VSTO 開発では、自動ビルド用に Win7 に TFS をインストールして、サーバー側の相互運用の問題を回避します。

Office オートメーションにサーバー OS を使用しないでください。サポートされていない KB 記事に従って、Win7 を使用してください。

Microsoft は、Office をサーバー側にインストールする必要がなく、最も一般的なタスクを自動化よりも効率的かつ迅速に実行できる、いくつかの代替手段を強くお勧めします。Office をサーバー側コンポーネントとしてプロジェクトに含める前に、代替手段を検討してください。

于 2013-03-18T07:13:46.943 に答える
2

リンクされたstackoverflowの投稿から何を試したかわからなくても、COMオブジェクトが表示されない場合は、通常、実行する必要があります

mmc -32

コンポーネント サービススナップインを手動で追加します。これは、Windows Server 2008 R2 と Windows Server 2012 の両方で機能しました。

また、次の場所にデスクトップ ディレクトリを作成する必要があります。

C:\Windows\SysWOW64\config\systemprofile

C:\Windows\System32\config\systemprofile

于 2013-03-12T11:39:13.947 に答える
2

正確な 000209FF-0000-0000-C000-000000000046 コードを探すべきではありません。その場合、別の名前を持つ可能性があります。私は 00021401-0000-0000-C000-000000000046 を持っています。数字のペアの最後に従ってシークしようとします。mmc コンソールにサービス コンポーネント タブを追加することを忘れないでください。

更新しました

ここに画像の説明を入力

于 2013-03-18T07:52:37.220 に答える
1

チェックして調整する必要があるさまざまな宮殿があるため、これはSOの回答を入力するよりもはるかに簡単に実行できます.

しかし、全体的な目標は、1) COM コンポーネントへのアクセスと起動/アクティブ化を試みたセキュリティ アカウントを追跡すること、および 2) どの COM コンポーネントに障害があったかを突き止めることです。

注:説明されている手順はセキュリティ上の危険性を高めるため、行ったすべての変更の優れたログを必ず作成して、問題を正確に修正する方法を把握するだけでなく、無関係なものをすべてロールバックできるようにしてください。
注 2サーバーの再起動が必要かどうかに関係なく、一度に 1 つの変更を行います。\ - 何が修正されたかがわかります。

  • Windows ログから始めます。通常、関連する正確なセキュリティ プリンシパルと、アクセス/アクティブ化を試みた DCOM コンポーネントがログに記録されます。通常、セキュリティ コンテキストとコンポーネントの両方が非常に明白です。そのような場合は、dcomcnfg以下の段落にスキップできます。

  • コンポーネント/アカウントが見つかったかどうかを一時的にテストする 1 つの方法は、セキュリティ アカウントに管理者権限を許可するか、コンポーネントへの「EVERYONE」アクセスを許可し、エラーを解消するかどうかを確認する ことです
    。すべてをロールバックすることを忘れないでください。

  • 永続的な構成の変更は、コンポーネント サービス MMC スニペットで行われます。管理者特権の MMC ウィンドウに手動で追加するか、管理者権限で次のコマンドを実行することで簡単に実行できます。

/>dcomcnfg

  • Component Services/Computers/My Computer/DCOM Config/ で目的のコンポーネントを探し、右クリックして [ Properties ] を実行します。ここに画像の説明を入力

  • [セキュリティ] タブに移動し、アクティブ化とアクセスのアクセス許可を問題を解決する最小限に調整しますが、可能な限りロックダウン状態に近づけます。
    注: MS Office 相互運用機能でこれを行ったことはありません。これを行うことによるすべてのセキュリティへの影響を必ず考慮してください。
    ここに画像の説明を入力

それはほとんどあなたが始める方法です。私は Windows のすべてのフレーバーでこれを実行しましたが、常に異なる感じがします。多くの場合、この状況を追跡するために、SysInternals の "スパイ" ツール、Windows セキュリティの監査、 COM+ アプリケーションのプロパティ、および場合によってはファイル システムまたはレジストリ キーの ACL を直接変更する他の方法に頼らなければなりません。ほとんどの場合、それはラボ/開発マシンであるため、レジストリ キーのセキュリティの編集などのハッキングは問題ありませんでした。

繰り返しになりますが、必要のないすべての変更を追跡してロールバックしてください。

于 2013-03-19T02:38:41.383 に答える