tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^7: WIN2012サーバー+タスクスケジューラーで、EXCELの実行
投稿日: 2020/03/11(Wed) 19:39
投稿者魔界の仮面弁士
>> 64bit 版 Office - C:\Windows\System32\config\systemprofile\Desktop
>> 32bit 版 Office - C:\Windows\SysWOW64\config\systemprofile\Desktop
> 「Desktop」フォルダーを単純に作って実行してみましたが、結果は同じでした。

当方では試していないのですが、Web で検索した限りでは、
上記フォルダーで解決したという報告が多かったのですが…駄目でしたか。


フォルダー作成後は、念のために再起動を行っておいてください。
それから、フォルダーの作成は「管理者コマンドプロンプト」から行ってください。

このフォルダーは管理者に対してはフルコントロール権限がありますが、
一般ユーザー権限だと閲覧すらできないようになっているためです。
(エクスプローラーからだと追加のアクセス権の割当を要求されてしまうはず)


このフォルダーのアクセス権を cacls コマンドで確認すると、
恐らく下記 2 件の ACL 情報が列挙されると思います。

 NT AUTHORITY\SYSTEM:(OI)(CI)F
 BUILTIN\Administrators:(OI)(CI)F


あとは権限繋がりで、レジストリ関係ぐらいしか思い当たらないです。

スケジュール起動の場合とデスクトップ起動の場合とで、
レジストリ アクセスやファイル アクセスの I/O 動作に違いが無いか、
Process Monitor で追跡できないでしょうか。


> ちなみにですが、VB.NETのプログラムはもちろんですがEXCEL自体も、
> 対話形式で何かを聞いてくるようにはなっておりません。

Hongliang さんが提示してくださった URL にも書かれていますが、
Office は対話型インターフェイスを前提として設計されています。

Excel の Interactive プロパティや DisplayAlerts プロパティを
False にすることで、ある程度は自動応答な動作にすることができますが、
それによって対話型インターフェイスを完全に抑制できるわけではありません。


ちなみにかつての VB6 においては、App.UnattendedApp プロパティというものがあり、
コンパイルオプション「対話型インターフェイスの抑制」のチェックボックスから、
対話モードの有無を設定できるようになっていました。
残念ながら VB.NET や Excel には同等機能がありません。

VB6 で UnattendedApp = True の場合、MsgBox を呼び出したとしても、
メッセージ応答のためにプログラムが中断することはありません。
また、プログラムで捕らえていない実行時エラーが発生した時にも
ダイアログの類は一切表示されず、メッセージ内容はイベントログに
自動記録されるような仕掛けになっていました。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。