1

我有一个在 Windows Server 2003 上运行的 .NET 控制台应用程序,作为计划任务。

这使用 Process 类来运行另一个小控制台应用程序,但它使用 Process.StartInfo.Username 来模拟用户来运行它。

如果在管理员的计划任务中模拟的帐户,那么它可以正常工作,但如果不是,那么我会收到错误:

'应用程序初始化失败(0xc0000142)'</p>

我曾尝试让用户“作为批处理作业登录”和“本地登录”,但这似乎没有任何效果。控制台应用程序确实以模拟用户身份启动,但随后失败。

查看 Process Monitor,它失败之前的最后一个事件是:

Tool1.exe - 加载映像 - C:\WINDOWS\system32\kernel32.dll - 成功

我已经运行了 Depends on the tool,它报告这是错误:

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 回答