void RestartService(std::string strServiceName)
{
    SC_HANDLE hSCM = NULL;
    SC_HANDLE hDns = NULL;

    try {
        hSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
        if (!hSCM) {
            cout << "OpenSCManager Error" << endl;
            throw -1;
        }

        hDns = OpenService(hSCM, strServiceName.c_str(), SERVICE_ALL_ACCESS);
        if (!hDns) {
            cout << "OpenService Error" << endl;
            throw -1;
        }

        SERVICE_STATUS schStatus = {0, };

        BOOL bStop = ControlService(hDns, SERVICE_CONTROL_STOP, &schStatus);

        if (bStop) {
            cout << strServiceName << " Stop" << endl;
        }

        BOOL bStart = StartService(hDns, 0, NULL);

        if (bStart) {
            cout << strServiceName << " Start" << endl;
        }
    }
    catch (...) {}

    if (hDns) {
        CloseServiceHandle(hDns);
    }
   
    if (hSCM) {
        CloseServiceHandle(hSCM);
    }
}

'Dev > Windows' 카테고리의 다른 글

COM+ Queued Components  (0) 2007.08.09
SWC (Services Without Components)  (0) 2007.08.08
MultiMedia Timer  (0) 2007.05.14
.NET Enterprise Services 성능 ( vs COM+)  (0) 2007.05.14
DLL 파일 찾는 순서  (0) 2007.05.14

+ Recent posts