概要
『C#でタスクスケジューラ情報を取得』については下記。
上記はローカルのタスクスケジューラ情報を取得している。
でも、 ITaskService.Connect()
は下記のように、外部端末のタスクスケジューラ情報を取得することもできる。
だが、接続情報が正しいはずなのに下記のように失敗する。
この要求はサポートされていません。 (HRESULT からの例外:0x80070032)
また、接続できたとしても下記のような失敗になる。
アクセスが拒否されました。 (HRESULT からの例外:0x80070005 (E_ACCESSDENIED))
そういった時に『この設定を変えれば直るかも』という内容です。
細かい動作検証はしていないので、参考情報となります。
あたいの環境ではこうやったら解決しました、という記録(メモ)レベル。
ファイアウォール
まず『この要求はサポートされていません。』で失敗する時は、ホスト(接続される側)のファイアウォールで弾かれてる可能性が高い。
『受信の規則』の『スケジュールされたリモートタスク管理(RPC)』を許可してあげると接続できた。
例えばドメイン参加端末であればホスト側が下記のようになっている必要あり。
接続ユーザー
接続できたのに『アクセスが拒否されました。』で失敗する時は、接続ユーザーが原因である可能性が高い。
例えば『hoge』って名前のユーザーでホスト側にタスクスケジューラ設定したとする。
(フォルダーとかタスク作ったりとか)
そうしたらクライアント側も『hoge』というユーザーで接続しないと『アクセスが拒否されました。』で失敗する可能性が高い。
これは ITaskService.Connect()
に引数で渡すユーザー情報の話。
exeをキックするユーザーは関係ない。(違っていても問題無い)
これについては…
接続できるのに、なんで『アクセスが拒否されました。』で失敗するんだろう…。
もしかして『設定したユーザー』と『接続するユーザー』が違うからかな?
試しに同じに揃えてみるか…。
あ、解決した!
っていうくらいの動作確認のみ。
参考サイトさん
バージョン
Windows 10 Pro 22H2 OSビルド 19045.2486
Microsoft .NET Framework Version 4.8.04084