Windows XPE服务安装 - 如何在CreateService时间设置安全性?
-
24-09-2019 - |
题
我正在使用CreateService在Windows XPE上安装Windows服务。我想设置内容,以便只有管理员才能启动/停止/暂停/恢复服务。
现在,我正在使用以下操作来安装服务:
schService = CreateService(schSCManager,
ServiceName,
ServiceDisplayName, // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
binaryPathName, // service's binary (this program)
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // LocalSystem account
NULL); // no password
服务最终获得了安全性,因此Powerusers Group的成员可以开始和停止服务。我已经发现我可以使用SC SDSHOW检查安全性描述符,并且我已经制定了一条SDDL线,可以为我们做正确的事情。
我还了解到,我们的Win XPE安装没有SC.EXE二进制,因此我们无法真正使用它来设置此特定系统。
因此,我需要知道的是:我需要使用什么API,以在我进行createService调用时在此服务上设置安全性描述符。我完全不熟悉Windows安全性API,所以我只是不知道从哪里开始。
更新:答案是SetServiceObjectSecurity(下图)。下一个问题:设置SecurityDeScriptor的最佳方法是什么?最好获取默认描述符,然后修改它吗?还是我应该创建一个全新的描述符?
解决方案
我并不真正熟悉Windows XP的嵌入式,但是通常您会在使用后实现自己的目标 setServiceObjectSecurity 功能。使用您从CreateService获得的句柄,并构建与您想要的相匹配的安全描述符。
不隶属于 StackOverflow