Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Dienste Stoppen deaktivieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
25.05.2005, 09:29 Uhr
GuenniAtWork



Tach auch,

gibt es ne Möglichkeit dienste mit hilfe der MFC zu stoppen bzw. zu deaktivieren?
Ich dachte vieleicht gibt es einen Weg über die Registry, aber fehlanzeige.

Vieleicht weiß ja einer von euch schlauen Jungs was genaueres.
--
Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
25.05.2005, 10:00 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


schau dir mal

OpenSCManager

und konsorten in der MSDN an, damit kriegt man auch die Service-Infos und Status usw und kann diese auch ändern.

ein beispiel gibts hier: www.fun-soft.de/showtopic.php?threadid=9632 es ist zwar wie man einen Service installiert und startet, aber so haste ein Beispiel wie man das überhaupt nutzt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.05.2005, 12:13 Uhr
GuenniAtWork



Danke für den link.
Ist sehr gut erklährt in der MSN.
Aber VS will nicht.


C++:
//#include <winsvc.h>
#include <windows.h>
...
void Services(TService tService)
{
    LPSERVICE_STATUS lpscStatus;
    SC_HANDLE scHandle = OpenService(NULL,tService.sServiceName,SC_MANAGER_ALL_ACCESS);
    if(scHandle)
    {
        switch(tService.iAction)
        {
        case 0: //starten
            ControlService(scHandle,SERVICE_CONTROL_STA,&lpscStatus);
            break;
        case 1: //Deaktivieren
            break;
        }
    }
}



VS meint dazu :

error C2065: 'LPSERVICE_STATUS': nichtdeklarierter Bezeichner
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'lpscStatus'
error C2065: 'lpscStatus': nichtdeklarierter Bezeichner
error C2065: 'SC_HANDLE': nichtdeklarierter Bezeichner
error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'scHandle'
error C2065: 'scHandle': nichtdeklarierter Bezeichner
error C2065: 'SC_MANAGER_ALL_ACCESS': nichtdeklarierter Bezeichner
error C3861: 'OpenService': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'scHandle': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C2065: 'SERVICE_CONTROL_STOP': nichtdeklarierter Bezeichner
error C3861: 'ControlService': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'scHandle': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
error C3861: 'lpscStatus': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden

In der MSN steht dass man windows.h includieren soll, was ich gemacht habe.
(habe auch winsvc.h includiert)

Und jetzt?
--
Gruß GuenniAtWork

Dieser Post wurde am 25.05.2005 um 12:18 Uhr von GuenniAtWork editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.05.2005, 13:38 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


du musst

WINVER auf mind Win2000 definieren (musst nachschaun, ist glaub ich 0x0500 oder so)


Bearbeitung:

define _WIN32_WINNT >= 0x0400 for Windows NT 4.0


--
class God : public ChuckNorris { };

Dieser Post wurde am 25.05.2005 um 13:39 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.05.2005, 14:14 Uhr
GuenniAtWork



Wie und Wo?

Ich hab nen Eintrag in stdafx.h gefunden und auf 0x0500 geändert, aber das Ergebnis war das selbe.

Oder wie meinst Du das FloSoft?
--
Gruß GuenniAtWork

Dieser Post wurde am 25.05.2005 um 14:15 Uhr von GuenniAtWork editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
25.05.2005, 15:01 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hast du evtl winsvc vor windows.h inkludiert? eigentlich sollte das da gehen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
25.05.2005, 15:09 Uhr
GuenniAtWork



Keine Ahnung warum, aber auf einmal gehts.

Herzlichen Dank für die Hilfe!
--
Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
26.05.2005, 15:27 Uhr
GuenniAtWork



Hi,

Ich habe es jetz soweit geschaft dienste (genauer einer) zu starten und zu deaktivieren.
Nur Ihn zu stoppen bekomme ich nicht hin.


C++:
int RunService(TService tService)
{
    LPSERVICE_STATUS lpscStatus = NULL;
    SC_HANDLE schServiceManager = OpenSCManager(NULL,SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS);
    SC_HANDLE schService = OpenService(schServiceManager,tService.sServiceName,SC_MANAGER_ALL_ACCESS);
    LPQUERY_SERVICE_CONFIG lpServiceCfg = NULL;
    DWORD dwNeededBuffer = 0;
    DWORD dwServiceError = 0;
    if(schService)
    {
        switch(tService.iAction)
        {
        case 0: //Starten
            StartService(schService,0,NULL);
            dwServiceError = GetLastError();
            break;
        case 1: //Stopen
            ControlService(schService,SERVICE_CONTROL_STOP,lpscStatus); //Hier ist der Wurm drin!!!
            dwServiceError = GetLastError();
            break;
        case 2: //Deaktivieren
            ControlService(schService,SERVICE_CONTROL_STOP,lpscStatus); //Erst Stoppen.
            ChangeServiceConfig(
                schService,
                SERVICE_NO_CHANGE,
                SERVICE_DISABLED,//Deaktivieren
                SERVICE_NO_CHANGE,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL,
                NULL);
            break;
        case 3: //Löschen
            DeleteService(schService);
            break;
        }
    }
    CloseServiceHandle(schServiceManager);
    CloseServiceHandle(schService);
    return (int)GetLastError();
}



Als Rückgabewert von StopService erhalte ich 487 (= ERROR_INVALID_ADDRESS).
Warum Nur?
In der MSDN ahb ich noch ein anderes Beispiel gefunden, welches aber nicht funktioniert ( Copy & Pase).
--
Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
26.05.2005, 15:54 Uhr
Spacelord
Hoffnungsloser Fall


Uwe hatte hier mal nen Beispiel für nen Service gepostet:
www.fun-soft.de/showtopic.php?threadid=2697&post_start=10&time=

Vielleicht hilft dir das weiter.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.05.2005, 16:48 Uhr
GuenniAtWork



Hilft mir leider nicht weiter, aber danke für die Mühe.
Ich möchte einen schon vorhandenen Dienst stoppen.
D.h. das Prog ist kein dienst, soll nur Dienste "verwalten" (wenn man das so nennen kann).
--
Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: