WindowsServer2016のサービスでOfficeオートメーションを使う


サービスでオートメーションは基本使えない

使えないんだってさ。で、色々と調べてたらCreateProcessAsCurrentUserというキーワードに辿り着くんだけど、実はこれもダメなんです。普通には動くんだけど、実はログオフ状態だと動かなくなるです。

ExcelもWordlもPowerPointも軒並みエラー

ファイル 'hoge.xlsx' にアクセスできません。次のいずれかの理由が考えられます。

• ファイル名またはパスが存在しません。
• ファイルが他のプログラムによって使用されています。
• 保存しようとしているブックと同じ名前のブックが現在開かれています。
hoge.ppt
プログラムの実行を続行するための十分なメモリがありませんでした。
hoge.docx
オブジェクト参照がオブジェクト インスタンスに設定されていません。

まあそもそもやっちゃだめなんでしょうね。
これをなんとかしましょう。

まずDesktopフォルダが必要

C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop

こいつらがなければ作ります。

管理者権限のあるアカウントをサービスで指定

コンポーネントサービスでも設定

「コンソール ルート」‐「コンポーネント サービス」‐「コンピュータ」‐「マイコンピュータ」‐「DCOM の構成」

ここから目的の項目を見つけ出して右クリック。

「ID」タブの「このユーザー」を選択して管理者権限のあるアカウントを設定。

以上。
これでログオフされてても動かせます。

セキュリティがどーのこーのとか、Officeのライセンス違反にならないようにとか、そういう話はちゃんとやって下さいね、と。