作为服务运行的应用程序无法创build与从cmd运行时相同数量的进程

我有一个Windows应用程序,最多可以创build35个进程,并且在从cmd运行时工作正常。 但是当它作为一个服务在同一台机器上执行时,由于某种资源耗尽问题,只能创build20个进程而其他所有进程都被终止。

该问题在一台Windows 2003服务器上保留,但在其他服务器上不可重现。

是否因为系统已经用完了桌面堆? http://support.microsoft.com/kb/184802

我如何检查它?

是的,这可能是发生了什么事情。 您可以监视桌面堆(等待它….)桌面堆监视器! 你可以在这里得到它,或者这是谷歌第三次“桌面堆”。 在search词上的其他命中给出了很多关于诊断和解决问题的细节,所以做一些阅读,加载该工具,然后您就可以参加比赛了! 给它几个镜头,然后回到这里让我们知道,如果这有助于你。

这是你创build的应用程序吗? 如果是这样的话,你可能会把有关可用内存和资源的信息logging到一个文件中,以帮助缩小发生的情况。 在Windows的日志中是否显示任何内容? 服务在哪个帐户下运行? 如果您尝试运行服务作为您正在testing的用户,是否也会发生同样的情况? 不同的环境variables,或不同的安全上下文?

过程在做什么? 这可能是一个奇怪的安全设置。 sysinternals可能有一个工具,可以帮助您debugging问题,如使用procmon。 这可能会显示文件或registry设置获取拒绝或失败错误的位置,具体取决于进程正在执行的操作。 即使procmon无法帮助,套件中可能会有其他工具。 谷歌的sysinternals(免费从微软),看看他们的东西可以告诉你。