代码之家  ›  专栏  ›  技术社区  ›  Michael Kohne

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

  •  0
  • Michael Kohne  · 技术社区  · 15 年前

    我正在使用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二进制文件,所以我们不能真正使用它来安装这个特定的系统。

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

    更新:答案是setServiceObjectSecurity(如下)。下一个问题:设置SecurityDescriptor的最佳方法是什么?最好先获取默认描述符,然后再修改它吗?还是应该创建一个全新的描述符?

    1 回复  |  直到 15 年前
        1
  •  1
  •   villintehaspam    15 年前

    我不太熟悉嵌入的Windows XP,但通常使用 SetServiceObjectSecurity 功能。使用从CreateService获得的句柄并构建一个与您想要的匹配的安全描述符。

    推荐文章