在Windows XP下限制一个svchost.exe托pipe的服务?

有没有一个registry设置或限制在单个svchost.exe进程内运行的单个服务的数量?

我知道WIN32_SHARE_PROCESS标志和sc应用程序能够使各个服务在自己的进程中运行,但是我不想为几十个服务中的每个服务开销一个进程。 理想情况下,我希望通过Workstation 自动更新提供的30个服务由三个到五个进程共享。

您可以通过修改HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/SvcHost的registry项来控制将哪些服务捆绑到一个svchost进程中。 您将修改这些值,每个值都包含在其中运行的服务的列表(例如netsvcs)。

还有一些关于这方面的信息,其中大部分与Conficker蠕虫相关,并在之后进行清理。 这是基于研究有关的情况下,我不得不手动清除一些恶意软件服务的痕迹。

更新其他资源/信息:这里没有太多的信息,我还没有尝试过,但是我在研究之前发现的最有用的信息是:

  • 分离SvcHost服务 (一种howto),
  • Windows服务包装器的介绍 ,涵盖了svchost.exe加services.exe,dllhost.exe,lsass.exe,srvany.exe,并链接到相当多的资源和更多信息,
  • 帮助与svchost.exe(Windows更新/ wuauclt.exe) (可能整个线程,页3是相关的地方)

这样做你不会注意到任何性能的改善…

如果您想按需启动某些服务,请将其设置为“手动启动”,Windows将在尝试访问时启动该服务。

如果您想要查看导致性能问题的服务,请尝试启动命令提示符并使用以下命令: C:\>tasklist /svc /FI "IMAGENAME eq svchost.exe"

这将显示所有svchost.exe实例,每个进程中运行的服务以及PID(进程ID)。

一旦你知道了PID,你可以启动任务pipe理器(Ctrl+Alt+Del) ,在Processes选项卡中转到View > Select Columns...并select显示PID。

然后你会知道哪个svchost.exe导致你的性能问题,并且你可以交叉引用PID到你在svchost.exe实例中运行的服务列表。

希望这有助于解决您的问题的根本原因。