如何使用Qt启动/停止Windows服务?

时间:2017-09-29 08:17:27

标签: qt windows-services

让我们想象一下情况:我已经运行了名为"测试"的Windows服务。现在我想使用Qt app 停止启动(如果它已停止)此服务。

我该怎么做?

注意:

  

我不想打电话给cmd并使用" net start"和" net stop"命令!

3 个答案:

答案 0 :(得分:1)

您可以使用相应的Qt解决方案https://github.com/qtproject/qt-solutions/tree/master/qtservice

然后你可以做类似的事情:

QtServiceController controller("Test");
controller.stop();
controller.start();

答案 1 :(得分:0)

不幸的是,Qt没有在API上提供此类服务。

您需要研究WinAPI解决方案。 有an example on MSDN如何停止服务。我相信你可以想出如何使用相同的方法启动它。

此外,您还可以检查much smaller example如何启动和停止服务。

答案 2 :(得分:0)

您可以只使用 sc 命令(this page 有一些使用信息或只需在命令提示符下键入 sc)。

sc stop Test
sc start Test

所以:

QProcess::execute("sc", { "stop", "Test" });
QProcess::execute("sc", { "start", "Test" });

请注意,您需要在提升的上下文中运行才能控制大多数服务。

如果您愿意,也可以使用 net 代替 sc,启动和停止的语法相同。

参数需要是服务键名,而不是显示名;因此,如果您只有显示名称,则可以运行 sc querysc GetKeyName "Display Name" 并解析输出。