Windows Dienste(z.B. Netzwerk Dienst)
-
Tach!
Wie kann man einen Dienst unter Windows XP Starten bzw. Beenden??
Danke im Voraus!
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
-
Also folgendes!
Ich habe mir mal folgenden Code zusammen geschnitten, um den Nachrichtendienst zu starten:
SC_HANDLE schSCManager; // Open a handle to the SC Manager database. schSCManager = OpenSCManager( NULL, // local machine NULL, // ServicesActive database SC_MANAGER_ALL_ACCESS); // full access rights if (NULL == schSCManager) Label1->Caption = "Fehler!" ; SC_HANDLE schService; SERVICE_STATUS_PROCESS ssStatus; DWORD dwOldCheckPoint; DWORD dwStartTickCount; DWORD dwWaitTime; DWORD dwBytesNeeded; schService = OpenService( schSCManager, // SCM database "Nachrichtendienst", // service name SERVICE_ALL_ACCESS); StartService( schService, // handle to service 0, // number of arguments NULL);Nur leider startet er nicht!
Könnt ihr mir helfen????
THx
-
*lol* das Ding heißt nicht "Nachrichtendienst" sondern "Messanger":
#include <iostream> #include <string> #include <windows.h> using namespace std; string get_errmsg( unsigned long error ); int main( ) { SC_HANDLE sc; if( !( sc = OpenSCManager( 0, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE | GENERIC_READ ) ) ) { cout << "OpenSCManager() failed:" << endl; cout << get_errmsg( GetLastError( ) ) << endl; return EXIT_FAILURE; } SC_HANDLE messenger; if( !( messenger = OpenService( sc, "Messenger", SERVICE_START ) ) ) { CloseServiceHandle( sc ); cout << "OpenService() failed:" << endl; cout << get_errmsg( GetLastError( ) ) << endl; return EXIT_FAILURE; } if( !StartService( messenger, 0, 0 ) ) { CloseServiceHandle( messenger ); CloseServiceHandle( sc ); cout << "OpenService() failed:" << endl; cout << get_errmsg( GetLastError( ) ) << endl; return EXIT_FAILURE; } cout << "Service \"Messenger\" has been started!" << endl; CloseServiceHandle( sc ); return EXIT_SUCCESS; } string get_errmsg( unsigned long error ) { void *buffer; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, error, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), reinterpret_cast< char* >( &buffer ), 0, 0 ); string errmsg = string( reinterpret_cast< char* >( buffer ) ); LocalFree( buffer ); return errmsg; }Greetz, Swordfish
-
THx!!!!!!!!!!!
Jetzt is da noch ein kleines problem, das starten und beenden geht einwandfrei!!!!
Aber wenn ich jetzt die Einstellungen des Dienstes auf 'Deaktiviert' und nicht wie üblich auf 'Manuell' habe, dann wird der Dienst nicht Aktiviert, wie stelle ich es nun an, ihn zu Aktivieren (Wenn er auf 'Manuell' Eingestellt ist, dann lässt er sich starten und beenden)?????
-
Greetz, Swordfish
-
Hmmm:
SC_HANDLE sc; SC_HANDLE messenger; sc = OpenSCManager(0, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ENUMERATE_SERVICE | GENERIC_READ); messenger = OpenService(sc, "Messenger", SERVICE_START); ChangeServiceConfig( messenger, SERVICE_FILE_SYSTEM_DRIVER, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, NULL, NULL, NULL, NULL, NULL, NULL, NULL );Ich möchte jetzt, dass der 'Nachrichtendiesnt' Automatisch geöffnet wird!
Was mach ich falsch?
-
Hab ich schon hinbekommen!