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


0

是否有注册表设置或用于限制单个svchost.exe进程中运行的单个服务数量的内容?

我知道WIN32_SHARE_PROCESS标志和sc应用程序使单个服务在自己的进程中运行的能力,但是我不希望数十个服务中的一个都有进程的开销。理想情况下,我希望看到当前由单个进程托管的“通过工作站自动更新”的30项服务在三到五个进程之间共享。

Answers:


2

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

那里有更多有关此的信息,其中大部分与Conficker蠕虫有关,请在清除后进行清理。这是基于与情况相关的研究,在这种情况下,我不得不手动清除某些恶意软件服务的痕迹。

使用其他资源/信息进行更新:那里没有很多信息,我还没有尝试过,但是我在研究时发现的最有用的信息是:


我在MS KB文章(#314056)中看到了对该路径的引用,但我的印象是我不能只更改这些值。例如,该netsvcs组中具有服务器,工作站等,并且如果您在中查看这些服务的服务描述符System\CurrentControlSet\Services,它们将netsvcs在其ImagePath设置中引用。只要我ImagePath为移动的所有服务都更新了组,是否安全地重新安排组?
Tim Sylvester,2009年

使用其他资源对帖子进行了修订,其中包括具有所需逐步更改的资源。
fencepost

第一个链接正是我想要的。谢谢!
Tim Sylvester,2009年

1

通过执行此操作,您不会注意到性能有任何改善。

如果要按需启动某些服务,请将它们设置为“手动启动”,并且Windows将在尝试访问该服务时启动该服务。

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

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

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

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

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


我知道运行更多的主机实际上会稍微降低性能,因为这些服务无法再共享资源。我希望能够动态降低使用大量CPU的进程的优先级,而又不会立即影响几乎所有服务,但是我也试图在平衡和让每个服务使用自己的进程之间找到平衡。对于一次性分析,我将使用serverfault.com/questions/12278中的脚本将它们全部设置为“ own”,并在发现问题时将它们全部设置为共享,但是我正在寻找更动态的东西。
Tim Sylvester,2009年

SC Config <服务名称> Type = own您可以将它们全部设置为所有者,找到罪魁祸首,然后将除罪魁祸首之外的所有内容重新共享。
加勒特(Garrett),2009年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.