Windows XPE服务安装 - 如何在CreateService时设置安全性?

时间:2010-02-01 18:00:33

标签: windows-services windows-xp windows-xp-embedded

我正在使用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组的成员可以启动和停止服务。我已经发现我可以使用sc sdshow来检查安全描述符,并且我已经找到了SDDL行,它可以为我们做正确的事。

我还了解到我们的Win XPE安装上没有sc.exe二进制文件,因此我们无法真正使用它来设置此特定系统。

所以,我需要知道的是:我需要使用哪些API,在我执行CreateService调用时设置此服务的安全描述符。我完全不熟悉Windows安全API,所以我不知道从哪里开始。

更新:答案是SetServiceObjectSecurity(下面)。下一个问题:设置SecurityDescriptor的最佳方法是什么?是否最好获取默认描述符,然后修改它?或者我应该创建一个全新的描述符?

1 个答案:

答案 0 :(得分:1)

我对Windows XP Embedded并不熟悉,但通常你会在使用SetServiceObjectSecurity功能后实现自己的目标。使用从CreateService获得的句柄,并构建一个与您想要的匹配的安全描述符。