Dienste starten und beenden



  • Ist es möglich, mit C++ und der WinAPI Windows NT Dienste zu starten und zu beenden, und das möglichst Remote, so dass ich von einem PC aus die Dienste auf anderen PCs steuern kann? Hab in der FAQ leider nichts dazu gefunden. Benutze selber die VCL, also falls jemand auch dafür was kennt, bitte auch posten.

    mfg

    david.



  • Ist es möglich, mit C++ und der WinAPI Windows NT Dienste zu starten und zu beenden, und das möglichst Remote, so dass ich von einem PC aus die Dienste auf anderen PCs steuern kann?

    Mit StartService() kannst Du Dienste starten und mit ControlService() und SERVICE_CONTROL_STOP im zweiten Parameter kannst Du Dienste stoppen. Das geht auch remote, OpenSCManager() nimmt im ersten Parameter den Rechnernamen.



  • super. danke. hat zwar n bisschen gedauert bis ich mich damit zurechtgefunden hab, aber ich denke, es funktioniert jetzt ganz gut. ich kann dienste problemlos beenden, was aber leider noch nicht klappt ist das starten. folgende anweisung benutze ich dazu:

    if((ManagerHandle=OpenSCManager("\\\\pcodrtest",SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS))!=NULL)
            {
    
                    if((ServiceHandle=OpenService(ManagerHandle,"AVSynMgr",SC_MANAGER_ALL_ACCESS))!=NULL)
                    {
                            if(StartService(ServiceHandle,0,NULL)!=NULL) cout << "ALLES OK";
                            else cout << "StartService::Error No.: " << GetLastError() << "..." << endl;
                    }
                    else cout << "OpenService::Error No.: " << GetLastError() << "..." << endl;
            }
            else cout << "OpenSCManager::Error No.: " << GetLastError() << "..." << endl;
    

    den selben dienst konnte ich beenden. aber wenn ich ihn kurz danach (nachdem er wirklich komplett beendet wurde, auch laut dienstmanager) versuche so wie oben beschrieben zu starten kommt error 1056 service is already running. weiss jemand woran das liegen kann?

    danke

    david.



  • habs jetzt auch selber hingekriegt. weiss zwar nicht so genau, wo jetzt das problem war, aber es funktioniert jetzt definitiv. danke.


Anmelden zum Antworten