ユーザー データを取り込み、Windows のスケジュールされたタスクを作成しようとする ASP.NET Web サイト (C#) があります。もちろん、これは DEV マシンではうまく機能しますが、サーバーでは実行できません。タスクを作成するために ASPNET ユーザー (または匿名 Web ユーザー) に必要な権限を把握しようとしています。
エラーは次のとおりです。
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Stacktrace:
at MyScheduler.NewWorkItem(String TaskName, Guid& rclsid, Guid& riid, Object& obj)
at MyScheduler.CreateTask(String name)
私はいくつかの検索を行いましたが、提案された解決策は、web.config 'impersonate' フラグを使用して、これらの権限を持たない可能性のある ASPNET アカウントとは対照的に、十分な権限を持つユーザーとしてアプリケーションを強制的に実行することです。
例:
<system.web>
<identity impersonate="true" />
</system.web>
残念ながら、これは問題を解決していないようです。私が読んだドキュメントから、これは匿名の Web ユーザーとして実行する必要がありますが、ユーザーには十分な権限がないようです。
マシンの管理者である特定のドメイン ユーザーを指定するように設定を変更しました。例:
<system.web>
<identity impersonate="true" userName="WindowsDomain\YourUserName" password="YourPassword" />
</system.web>
これにより、アプリケーションは Windows スケジュール タスクを正常に作成できました。したがって、明らかに、Windows 2003 の適切なアクセス許可のセットを使用して、アプリケーションを開発環境と同じように実行できます。ただし、ネットワークまたはマシンの管理者アカウントのユーザー資格情報をプレーン テキストで Web.config ファイルに配置するつもりはありません。
ASPNET アカウントを希望どおりに動作させるには、どのアクセス許可を正確に設定する必要があるかを知っている人はいますか?
編集: スケジュールされたタスクを作成するために Win32 API が使用されています。