0

我实际上什至不知道这里发生了什么,但我希望有人能帮助我。不久前,我创建了一个类来控制 Windows 服务,使用 Windows API SC。很长一段时间它工作正常,没有严重错误。但是今天我在我的项目中使用了这个类,当垃圾工作时(在 if 或函数中),我的应用程序崩溃了。只有当我尝试停止服务时才会崩溃。

int main() {
    wchar_t serviceName[] = L"foo";
    ServiceController *service = new ServiceController(serviceName);
    if(!service->isRunning()){
        service->start();
    } else {
        service->stop();
    }
    system("PAUSE");
    return 0;
}

例如,当服务“foo”没有运行时,方法 start 启动服务并正常关闭应用程序,否则如果服务正在运行,方法 stop 停止服务,system("PAUSE");正常工作,但返回后应用程序崩溃。

我已经尝试了一切,但没有任何帮助。

该课程可以在这里找到

谢谢!

编辑:在事件查看器上我可以发现这个错误:

Faulting application name: stop.exe, version: 0.0.0.0, time stamp: 0x02430cb0
Faulting module name: ntdll.dll, version: 6.1.7600.16385, time stamp: 0x4a5bdadb
Exception code: 0xc0000005
Fault offset: 0x00055668
Faulting process id: 0xb90
Faulting application start time: 0x01d07389e28c97f4
Faulting application path: C:\Users\CacicQT86\Documents\build-stop-Desktop_Qt_5_3_MinGW_32bit-Debug\debug\stop.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: 20ceff7a-df7d-11e4-905d-08002754d7a4
4

1 回答 1

0

解决了这个提交。我只是更改LPSERVICE_STATUSSERVICE_STATUS_PROCESS,不需要初始化, on stop()。可能是删除错误。

于 2015-12-16T00:19:37.197 回答