Windowsスケジューラで実行するC#プログラムをスケジュールしようとしています。私はWindows 7 Professionalを使用しています。
ユーザーがログインしているかどうかに関係なく実行するタスクセキュリティオプションセットを作成し、高い特権を与え、アクセスできるリモートパスでexeを起動することができます。
「エラー値:2147943785」、ご協力いただければ幸いです。
エラーのXMLは次のとおりです。
- <Event xmlns="http://schemas.Microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="Microsoft-Windows-TaskScheduler" Guid="{DE7B24EA-73C8-4A09-985D- 5BDADCFA9017}" />
<EventID>101</EventID>
<Version>0</Version>
<Level>2</Level>
<Task>101</Task>
<Opcode>101</Opcode>
<Keywords>0x8000000000000001</Keywords>
<TimeCreated SystemTime="2013-01-10T12:44:20.882178000Z" />
<EventRecordID>51522</EventRecordID>
<Correlation />
<Execution ProcessID="652" ThreadID="1892" />
<Channel>Microsoft-Windows-TaskScheduler/Operational</Channel>
<Computer>pcb.co.za</Computer>
<Security UserID="S-1-5-18" />
</System>
- <EventData Name="TaskStartFailedEvent">
<Data Name="TaskName">\Naedo</Data>
<Data Name="UserContext">Domanin\User31r</Data>
<Data Name="ResultCode">2147943785</Data>
</EventData>
</Event>
このスケジュールされたタスクを実行するように構成されているユーザーには、起動するexeをホストするコンピューターで「バッチジョブとしてログオン」権限が必要です。これは、exeをホストするコンピューターのローカルセキュリティポリシーで構成できます。 (exeをホストするサーバーで)ポリシーを変更できます
管理ツール->ローカルセキュリティポリシー->ローカルポリシー->ユーザー権利の割り当て->バッチジョブとしてログオン
ユーザーをこのリストに追加します(exeをホストしているマシンのユーザーアカウントをローカル管理者にすることもできます)。
最後に、ネットワークの場所からローカルコンピューターにexeをコピーして、そこから実行することもできます。
また、ドメインポリシーが組織の「バッチジョブとしてログオン」権限を制限している可能性があることに注意してください。
同じ問題を抱えていましたが、これまで数週間働いていました。サーバーのパスワードを変更したことに気付きました。
「ユーザーがログオンしているかどうかに関係なく実行する」オプションが選択されている場合は、必ずパスワードを更新してください
今日、Win7.x64でも同じことができます。これで解決します。
右クリックMyComputer>管理>ローカルユーザーとグループ>グループ>管理者ダブルクリック>追加しない場合は、名前がそこにあるはずです...