看来 Windows 使用的唯一命令行选项svchost.exe
是-k
,后跟 svchost 需要为给定服务启动的组名。但是,使用命令行选项表明可能还有其他可能的选项。但我似乎找不到这样的东西,获取命令行选项的一般方法(在命令行上传递--help
或/?
)似乎不起作用。
还有其他适用于 svchost 的命令开关吗?它们有什么作用?
答案1
这篇博文解释存在三个已知参数:-k
运行一组服务、-s
仅运行指定组中的特定服务以及-p
打开进程缓解策略。
另一篇博客文章,提供了有关其功能的更多详细信息-p
。Windows 有一个 APISetProcessMitigationPolicy
进程可以使用它来启用针对安全漏洞的各种缓解措施。每种可能的缓解措施类型称为“策略”。在 Windows 注册表中,在 下HKLM\Software\Microsoft\Windows NT\CurrentVersion\Svchost
,可以创建三个值来切换 的三个特定策略svchost.exe
:DynamicCodePolicy
、BinarySignaturePolicy
和ExtensionPolicy
。
该-p
选项的作用是强制为此过程启用这三种安全缓解策略svchost.exe
,即使它们未在注册表中启用。
为什么存在此选项?嗯,从安全角度来看,理想的做法是在 Windows 注册表中启用所有三个策略,以便它们始终处于启用状态。但是,可能存在某些产品(无论是 Microsoft 还是第三方产品)包含正在运行的服务,svchost.exe
并且这些标志打开后会中断,因此 Microsoft 不想默认启用它们。但是,对于 Windows 附带的服务,Microsoft 知道它们在打开这些标志后可以正常工作,为这些特定服务启用这些标志将具有更好的安全性。因此可以为特定服务组启用这些标志,而无需为所有服务-p
启用它们。svchost.exe
当然,这些都是 Windows 中未记录的内部机制,微软在未来的某个版本中可能会破坏它们。在试图依赖它们做任何事情之前,应该意识到这种可能性。
答案2
我在注册表中看到了该选项-p
,但后面没有任何参数。在 Google 上搜索 ,"svchost.exe -p" site:docs.microsoft.com
结果为零,因此似乎没有任何 (官方) 文档。我不知道该-p
标志的作用是什么,也不知道是否/p
与 相同-p
。