在计划任务中模拟.NET中的用户时出错

时间:2009-01-27 10:33:28

标签: .net process windows-server-2003 scheduled-tasks impersonation

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

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

如果在管理员中的计划任务中模拟的帐户,则它可以正常运行,但如果没有,则会收到错误:

  

'应用程序无法正确初始化(0xc0000142)'

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

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

  

Tool1.exe - 加载图片 - C:\ WINDOWS \ system32 \ kernel32.dll - SUCCESS

我在该工具上运行了Depends,它报告这是错误:

  

GetProcAddress(0x77E40000 [c:\ windows \ system32 \ KERNEL32.DLL],“FlsAlloc”)从地址0x7900746D的“c:\ windows \ system32 \ MSCOREE.DLL”调用,并由线程1返回0x77E6B49C。   由线程1退出“c:\ stfinstall \ stf \ tools \ tool1 \ TOOL1.EXE”(进程0xB3C),代码为1282(0x502)。

如果有人知道可能导致此错误的原因,甚至更好,我可以解决它,请告诉我!

欢迎提供替代方法的建议

谢谢:)

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,问题是它没有访问计划任务运行的用户的桌面,所以它失败了。 管理员似乎能够拥有此访问权限。

我绕过它的方式是让用户将任务运行为永久登录到盒子,因此始终可以访问桌面,这样就可以了。丑陋,我知道!