1

スケジュールされたタスクとして、Windows Server 2003 で .NET コンソール アプリを実行しています。

これは Process クラスを使用して別の小さなコンソール アプリを実行しますが、Process.StartInfo.Username を使用してユーザーになりすまして実行します。

管理者のスケジュールされたタスクで偽装されたアカウントの場合、それは完全に機能しますが、そうでない場合はエラーが発生します:

「アプリケーションを正しく初期化できませんでした (0xc0000142)」</p>

ユーザーに「バッチジョブとしてログオン」および「ローカルでログオン」を試みましたが、これは効果がないようです。コンソール アプリは、偽装されたユーザーとして起動しますが、失敗します。

Process Monitor を見ると、失敗する前の最後のイベントは次のとおりです。

Tool1.exe - イメージの読み込み - C:\WINDOWS\system32\kernel32.dll - 成功

ツールに依存して実行したところ、これがエラーであると報告されました。

GetProcAddress(0x77E40000 [c:\windows\system32\KERNEL32.DLL], "FlsAlloc") は、アドレス 0x7900746D の "c:\windows\system32\MSCOREE.DLL" から呼び出され、スレッド 1 によって 0x77E6B49C を返しました。"c:\stfinstall を終了しました\stf\tools\tool1\TOOL1.EXE" (プロセス 0xB3C) をスレッド 1 でコード 1282 (0x502) で実行します。

誰かがこのエラーの原因について何か知っている場合、またはそれを修正する方法を知っている場合は、お知らせください!

代替アプローチの提案も歓迎します

ありがとう :)

4

1 に答える 1

0

それ以来、これを解決しました。問題は、スケジュールされたタスクが実行されているユーザーのデスクトップにアクセスできないため、失敗することです。管理者はこのアクセス権を持つことができるようです。

私が回避した方法は、ユーザーにタスクを永続的にボックスにログオンして実行させることでした。そのため、デスクトップへのアクセスは常に利用可能であり、これは問題なく機能します。醜い私は知っています!

于 2009-02-13T08:42:37.513 に答える