我正在使用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获得的句柄,并构建与您想要的相匹配的安全描述符。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top