Windows服务管理与任务调度深入解析
1. 服务控制管理器(SCM)的服务启动机制
服务控制管理器(SCM)在系统中扮演着重要角色,它负责注册服务触发器,并在服务启动类型设置为 SERVICE_AUTO_START 时启动服务。当SCM启动承载用户服务的进程时,会分配当前登录用户的令牌以及 WIN://ScmUserService 安全属性,以此识别该进程确实在承载服务。用户登录系统后,实例和模板子键会存储在根服务键中,代表同一用户服务。用户注销时,实例子键会被删除;若在系统启动时该子键仍存在,则会被忽略。
2. 打包服务
自Windows 10周年更新(RS1)起,SCM开始支持打包服务。打包服务通过其服务类型中设置的 SERVICE_PKG_SERVICE (512) 标志来识别,主要用于支持转换为新现代应用模型的标准Win32桌面应用程序。桌面应用转换器可将Win32应用程序转换为Centennial应用,该应用运行在名为Helium的轻量级容器中。
启动打包服务时,SCM会从注册表读取包信息,并调用AppInfo服务。AppInfo服务会验证包信息是否存在于状态存储库中,以及所有应用程序包文件的完整性,然后为新服务的宿主进程令牌添加正确的安全属性。接着,使用 CreateProcessAsUser API以挂起状态启动进程,并创建Helium容器,该容器会像常规Centennial应用程序一样应用注册表重定向和虚拟文件系统(VFS)。
3. 受保护服务
Windows 8.1的SCM支持受保护服务,
超级会员免费看
订阅专栏 解锁全文

416

被折叠的 条评论
为什么被折叠?



