1

私は現在VB.NETでASP.NETアプリケーションに取り組んでおり、その機能の1つはWindowsタスクスケジューラを使用することです。アプリケーションは、タスクの作成、変更、削除、および実行を行う必要があるため、これをほぼ完全に制御する必要があります。

私はこのライブラリがすべてを支援することを発見しました、そしてそれはうまく機能しますが、私のWindowsXPマシン上でローカルにのみ動作します。アプリケーションをWindowsServer2003のIIS6に展開し、Schedulerオブジェクトを使用するページにアクセスするとすぐに、次のエラーが発生します。

アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))

ネット上でさまざまなソリューションを探しました。これには、特定のユーザー(さらにはEveryone)に、機能しなかったCACLSを使用した%windir%\ Tasksへのアクセス許可の付与や、偽装の使用、バックアップ操作ユーザーグループへのIUSERの追加などが含まれます。アプリケーションはWindows統合認証を使用する必要があるため機能します。

全体的な状況について私を混乱させていることの1つは、アプリケーションのテスト時にログインしているユーザーが、デスクトップをリモートでリモート接続してサーバーにログインし、タスクスケジューラをいじくり回すことができることです。また、Visual Studioでローカルに(同じユーザーの下で)アプリケーションを実行し、サーバーのタスクスケジューラにアプリケーションを向けると、正常に動作します。これに加えて、サーバーからアプリケーションを実行し、それをローカルのタスクスケジューラに向けると、同じ「アクセスが拒否されました」というエラーが発生します。そのすべてが、タスクスケジューラのアクセス許可ではなく、タスクスケジューラライブラリが使用しようとしている一部のコンポーネントのアクセス許可と関係があると思います。

これを解決するために私が何ができるか、あるいはこれが1日以上私を夢中にさせているので、正しい方向へのポインターさえも知っている人はいますか?IISの問題、なりすまし、およびWindows Serverのセキュリティに関しては、私は少し初心者であると言わなければなりません。

どうもありがとうございます

4

1 に答える 1

0

ねえ、私は遅れているかもしれないことを知っていますあなたができることは、これを使用するためにNT AUTHORITY\SYSTEMの下で実行するようにタスクを設定することです

(C#)

文字列NULL=null; task.SetAccountInformation( ""、NULL);

現在のユーザーに設定するには、ユーザー名を指定します

string username="あなたのxpユーザー名";
または文字列username=System.Security.Principal.WindowsIdentity.GetCurrent()。Name; 文字列NULL=null;

task.SetAccountInformation(ユーザー名、NULL);

それはあなたのために働くでしょう私は願っています!!!! どうだったか教えてください!!!

于 2010-12-05T08:05:11.243 に答える