C++ 如何在Windows服务应用程序中启动系统时运行代码?

C++ 如何在Windows服务应用程序中启动系统时运行代码?,c++,winapi,service,boot,C++,Winapi,Service,Boot,我有一个本地系统服务应用程序,用C++/MFC编写,设计用于在Windows操作系统上运行。我需要在系统刚刚启动时运行此服务中的代码。我最初的想法是从ServiceMain()代理函数开始运行它,该函数是通过调用StartServiceCtrlDispatcher()API定义的,但问题是,如果我停止并重新启动此服务,它也会运行。听起来您不需要服务。您可以对计划任务执行相同的操作。您可以使用taskschd.msc创建带有触发器的任务,以在系统启动时启动任务,或从命令行: schtasks.ex

我有一个本地系统服务应用程序,用C++/MFC编写,设计用于在Windows操作系统上运行。我需要在系统刚刚启动时运行此服务中的代码。我最初的想法是从ServiceMain()代理函数开始运行它,该函数是通过调用StartServiceCtrlDispatcher()API定义的,但问题是,如果我停止并重新启动此服务,它也会运行。

听起来您不需要服务。您可以对计划任务执行相同的操作。您可以使用
taskschd.msc
创建带有触发器的任务,以在系统启动时启动任务,或从命令行:

schtasks.exe /Create /SC ONSTART /TN MyTaskName /TR c:\Path_to_my_tool\my_executable.exe

听起来你更想要一个驱动程序而不是一个服务…不,我只需要知道系统启动的时间。如果是这样的话,
net statistics server
?如果你只想知道正常运行时间,你为什么不问:我如何确定系统正常运行时间?@ JAMESDLIN:我这样问是因为知道如何用自己的C++代码来做它是很好的,而不依赖于一些外部服务。谢谢。你看,我不是为了这个目的而创建服务的。我已经有了一个需要知道系统启动时间的服务。计划任务管理器本身就是一个服务,所以它必须知道,对吗?如果您已经有一个作为服务的exe,请使用特殊参数将其作为计划任务调用。例如:
myservice.exe/OnStartup
。在现有服务中,仅当存在命令行选项时,解析命令行并执行要在启动时运行的代码。