Server 2008でWindowsサービスを介してOfficeを自動化する
-
06-07-2019 - |
質問
2003 Serverで実行されるWindowsサービスがあります。 Word Interopを使用してソースのWord文書を開き、それから何らかの処理を行います。 ExcelおよびPowerPointファイルでも同様です。
最近、このサービスをWindows 2008 Serverマシンに移行しようとしましたが、実際に問題が発生しています。
Microsoft.Office.Interop.Excel.Workbooks.OpenでのCOMException Microsoft.Office.Interop.Word.Documents.OpenでのCOMException
2008サービスでWindowsサービスが実行されている場合、上記の例外が発生します。タスクマネージャーを見ると、アプリケーションは正常に読み込まれますが、その後すぐに閉じます。
VistaとServer 2008についてSession0がなくなったことを読み、それに応じてOffice DCOMセキュリティプロパティを変更しようとしました。
これが可能かどうかは誰にもわかりませんか?これはシステムの基本的な側面であるため、これを実行できる必要があります。
ありがとう
解決
Windows Server 2003では正常に動作しますが、Windows Server 2008でWindowsサービスからOfficeを自動化する際に問題が発生しました。この問題はOpen呼び出しでも発生するため、同じ問題である可能性があります。
H小川のこのMSDNスレッドが動作しているようです。奇妙ですが、それを発見してくれた小川氏に称賛を送ります。
「Ogawa Hack」の概要:システムプロファイル用のデスクトップフォルダーを次のように作成します。
C:\Windows\System32\config\systemprofile\Desktop
および、64ビットマシンで実行している場合、次のようにもう1つ作成します:
C:\Windows\SysWOW64\config\systemprofile\Desktop
また、フォルダには「運転中」のユーザーに対する書き込み権限が必要です。オフィス。
[編集:リンクURLを修正]
[編集2:64ビットWindowsでは、WOW64フォルダーだけでなく両方のフォルダーが必要であることを明確にしました]
他のヒント
Apacheを使用している場合は、MS Wordを適切に動作させるために、次の手順に従う必要がある場合があります(他の回答に記載されているすべてのこととともに):
以下は、表示する必要がある2つのダイアログを示すスクリーンショットです。
Apacheの場合:
サービス-> Apache->右クリック(プロパティ)->ログオンタブ
MS Word:
dcomcnfg.exeの起動->コンソールルート->コンポーネントサービス->コンピュータ->マイコンピュータ-> DCOM構成-> Microsoftアプリケーションの検索->右クリック(プロパティ)-> IDタブ
** MS Wordが見つからない場合は、インストールしているOfficeのバージョンに応じて、正しいDCOM構成(64ビットと32ビット)を起動していることを確認してください。
ここには2つのオプションがあります。Apacheがローカルシステムアカウントを使用するように設定し、デスクトップとの対話を許可するチェックボックスをオンにします。これを行う場合、MS Wordの Identity を Interactive User に設定する必要があります。
それ以外の場合は、図に示すように、両方を同じユーザー(理想的にはログインしているユーザー)に設定する必要があります。
まあ、 「MMC -32」を実行する必要があります。 (コマンドプロンプト)を使用して32ビットMMCを起動し、コンポーネントサービスを追加します([ファイル]> [スナップインの追加と削除]メニュー)
次に、次のいずれかの指示に従います。
これは、UACが有効になっているVistaでも発生します。 DCOM IDを管理者アカウントに設定して、もう一度テストしてみてください。
最近、相互運用サービスを介してExcelでブックを開こうとするXPボックスでこの問題が発生し始めましたが、まだ回避策は見つかりませんでした。私自身も、コミュニティがそこに投げ出すことができるかもしれない他の洞察が欲しいです...