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 <
010
26.05.2005, 17:33 Uhr
Tommix



Hallo,
ich hab zwar von der Sache keine Ahnung aber darf lpscStatus evtl nicht NULL sein? Also eher

C++:
SERVICE_STATUS status;
//...
ControlService(schService, SERVICE_CONTROL_STOP, &status);



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
27.05.2005, 10:46 Uhr
GuenniAtWork



Das ist nicht das Problem.
der dritte Parameter enthält am ende Statusinformationen über den Dienst den ich angefasst habe.


Zitat von MSDN:

BOOL ControlService(
SC_HANDLE hService,
DWORD dwControl,
LPSERVICE_STATUS lpServiceStatus
);

...

lpServiceStatus
[out] Pointer to a SERVICE_STATUS structure that receives the latest service status information. The information returned reflects the most recent status that the service reported to the service control manager.
The service control manager fills in the structure only when ControlService returns one of the following error codes: NO_ERROR, ERROR_INVALID_SERVICE_CONTROL, ERROR_SERVICE_CANNOT_ACCEPT_CTRL, or ERROR_SERVICE_NOT_ACTIVE. Otherwise, the structure is not filled in.




Die bleibt bei mir auch leer, weil der Fehler nicht einer von den im Quote angegebenen ist.
(sondern ERROR_INVALID_ADDRESS).

Also was anderes.
Vieleicht hängt es mit den Access Rigths zusammen.
Den ein weiteres Problem ist, dass ich nur einen einzigen Dienst offnen kann.
Diesen habe ich selber eingerichtet habe.
Alle anderen Dienste, kann ich nicht öffnen, das wird schService immer NULL.

In der MSDN steht auch noch:


Zitat von MSDN:

OpenSCManager/OpenService
...
Remarks
When a process uses the OpenSCManager function to open a handle to a service control manager database, the system performs a security check before granting the requested access.



Was heißt das genau?
Der prüft die von mir angegebenen Rechte und wenn ich die nicht besitze, sagt er "Du kommst hier net rein"?????
Oder wie ist das gemeint?
--
Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
27.05.2005, 11:11 Uhr
GuenniAtWork



Supi ich hab was neues!

Ich weiß jetzt warum schService bei allen anderen Diensten NULL ist.
Weil er dei dienste nicht findet. (Error code 1060 = ERROR_SERVICE_DOES_NOT_EXIST).
Das blöde ist die Dienste existieren!!!

Aber ich glaube ich weiß woran das liegt.
Ich lese die Dienstbezeichnungen, also die Beschreibung aus der Registrierung aus.
Übergebe an OpenService also die Beschreibung, und nicht den eigentlichen Namen des Dienstes. Bei dem Dienst, denn ich "öffnen" konnte entspricht der Name der Beschreibung.

Hätte ich auch früher drauf kommen können.

Gut also ein Problem weniger!!
(bleiben noch 1000. )

Das Problem mit dem stoppen des Dienstes besteht weiterhin.
--
Gruß GuenniAtWork

Dieser Post wurde am 27.05.2005 um 11:12 Uhr von GuenniAtWork editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
27.05.2005, 14:56 Uhr
GuenniAtWork



So die Dienste bekomme ich jetzt, aber stoppen kann ich immer noch nicht.
An den Berechtigungen lag es auch nicht.
Ich habe keinen Plan woran das liegt.
--
Gruß GuenniAtWork

Dieser Post wurde am 27.05.2005 um 14:56 Uhr von GuenniAtWork editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
30.05.2005, 13:55 Uhr
GuenniAtWork



Ich habs doch tatsächlich geschaft.
Und ich war die ganze Zeit ganz dicht dran!

Es lag an dem letzten Parameter von

C++:
BOOL ControlService(
  SC_HANDLE hService,
  DWORD dwControl,
  LPSERVICE_STATUS lpServiceStatus /*ersetzen durch SERVICE_STATUS*/
);



Mit dem hier verwendeten LPSERVICE_STATUS hat es nicht funktioniert.
Habe stattdessen SERVICE_STATUS genommen und die Variable als referenz übergeben (&acb), wie im Beispiel in der MSDN.

Vielen Dank an alle die geholfen haben!!


--
Gruß GuenniAtWork

Dieser Post wurde am 30.05.2005 um 13:59 Uhr von GuenniAtWork editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
30.05.2005, 17:04 Uhr
Tommix



Ich will nicht drauf rum reiten, aber habe ich nicht genau das geschrieben?

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
01.06.2005, 12:24 Uhr
GuenniAtWork



Jep,

und danke, danke, danke!!
--
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: