C++ 我可以从Windows服务调用system()

C++ 我可以从Windows服务调用system(),c++,windows,service,lua,C++,Windows,Service,Lua,是否可以调用system()在Windows服务的上下文中执行子流程 我使用锅炉板项目实现了一个C++的Windows服务:< /P> 该服务使用本地系统帐户和桌面交互权限启动,并在基于计时器的对象中运行各种代码,包括磁盘上的文件操作 但是,像系统(“C:\\bin\\sth.exe some param”)或从静态库运行lua代码在windows服务中不起作用。我已经通过在控制台应用程序中运行它们来确保它们工作正常 有什么线索吗?使用CreateProcess,以便获得错误代码。如果这没有帮助

是否可以调用
system()
在Windows服务的上下文中执行子流程

我使用锅炉板项目实现了一个C++的Windows服务:< /P> 该服务使用本地系统帐户和桌面交互权限启动,并在基于计时器的对象中运行各种代码,包括磁盘上的文件操作

但是,像
系统(“C:\\bin\\sth.exe some param”)或从静态库运行lua代码在windows服务中不起作用。我已经通过在控制台应用程序中运行它们来确保它们工作正常


有什么线索吗?

使用CreateProcess,以便获得错误代码。如果这没有帮助,请看一看,它有一些关于本地系统限制的重要信息和到解决方法的链接(特别是)

当您说“不工作”时,尝试时会发生什么?(1)安装windows服务,将“登录身份”设置为“本地系统”,然后启动它。(“服务安装程序可执行文件的非服务”部分在运行sys调用时没有问题)。(2) 服务在后台运行,运行一些磁盘操作,做一些日志记录-都很好。(3) 然而,Sys调用不会执行,也不会发生任何事情。有些应用程序根本不会在系统服务上下文中运行,因为它们依赖于不可用的功能。例如,它们可能依赖于缺少的环境变量,或者需要运行Explorer,或者使用用户首次登录时创建的每用户注册表设置。测试给定可执行文件在服务上下文中运行是否有问题的最简单方法是使用
psexec
(可从Microsoft下载)。C库
system
命令本身也可能具有这种依赖性。尝试改用本机
CreateProcess
,看看这是否有什么不同。短语“系统调用”通常用于指对操作系统发布的API的调用。C运行时函数
system()
在Unix上通过系统调用或其近亲之一实现,在Windows上可能通过
CreateProcess()
或近亲实现。我编辑了这个问题以反映这一点。我将对此进行研究。很难从中获得任何事件或错误代码,因为该服务只是在后台愉快地运行,并且实际完成了大部分工作。在我看来,我只能通过CreateProcessAsUser方法实现我想要的。我“只是”必须提供正确的访问令牌安全句柄。在我面前的另一个Windows仙境冒险。。。