AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

NT Service unter XP beenden?

Ein Thema von Delphi-Coder · begonnen am 11. Apr 2003 · letzter Beitrag vom 27. Jul 2003
Antwort Antwort
Seite 1 von 2  1 2      
Delphi-Coder

Registriert seit: 8. Jan 2003
Ort: Greifswald / Stralsund
151 Beiträge
 
Delphi 7 Enterprise
 
#1

NT Service unter XP beenden?

  Alt 11. Apr 2003, 21:22
Hallo,

wie kann ich einen NT Service unter Win XP beenden? Das Problem an der sache ist, dass ich nicht als Admin dabei eingeloggt bin! Gibts da irgendwelche Wege? Ist wirklich sehr wichtig!

Schonmal Danke im voraus!

Schönen Abend noch!
Delphi-Coder
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#2
  Alt 11. Apr 2003, 22:32
Hi,

um Services zu starten/stoppen musst du nicht unbedingt Admin sein, sondern du brauchst einfach die Rechte, Services zu starten und zu stoppen. Hast du die nicht, haste de keine Chance. Aber hier mal bischen Code zum Starten und Stoppen eines NT Services:

Start:
Code:
function ServiceStart(aMachine, aServiceName: String): Boolean;
// aMachine is UNC path or local machine if empty
var
  h_manager, h_svc: SC_Handle;
  ServiceStatus: TServiceStatus;
  dwCheckPoint: DWORD;
  ServiceArgVectors : PChar ;
begin
  h_manager := OpenSCManager(PChar(aMachine), nil,SC_MANAGER_CONNECT);
  if h_manager > 0 then
  begin
    h_svc := OpenService(h_manager, PChar(aServiceName),
                         SERVICE_START or SERVICE_QUERY_STATUS);
    if h_svc > 0 then
    begin
      if (StartService(h_svc, 0, ServiceArgVectors)) then { succeeded } 
      begin
        if (QueryServiceStatus(h_svc, ServiceStatus))then
        begin
          while (SERVICE_RUNNING <> ServiceStatus.dwCurrentState)do
          begin
            dwCheckPoint := ServiceStatus.dwCheckPoint;
            Sleep(ServiceStatus.dwWaitHint);
            if (not QueryServiceStatus(h_svc,ServiceStatus)) then
              // couldn't check status
              break;
            if (ServiceStatus.dwCheckPoint < dwCheckPoint)then
              break;
          end;
        end;
      end;
      CloseServiceHandle(h_svc);
    end;
    CloseServiceHandle(h_manager);
  end;

  Result := (SERVICE_RUNNING = ServiceStatus.dwCurrentState);
end;
und zum Stoppen:
Code:
function ServiceStop(aMachine, aServiceName:String): Boolean;
// aMachine is UNC path or local machine if empty
var
  h_manager, h_svc: SC_Handle;
  ServiceStatus: TServiceStatus;
  dwCheckPoint: DWORD;
begin
  h_manager := OpenSCManager(PChar(aMachine), nil,SC_MANAGER_CONNECT);
  if h_manager > 0 then
  begin
    h_svc := OpenService(h_manager, PChar(aServiceName),
                         SERVICE_STOP or SERVICE_QUERY_STATUS);
    if h_svc > 0 then
    begin
      if (ControlService(h_svc, SERVICE_CONTROL_STOP,ServiceStatus)) then
      begin
        if (QueryServiceStatus(h_svc, ServiceStatus))then
        begin
          while (SERVICE_STOPPED <> ServiceStatus.dwCurrentState)do
          begin
            dwCheckPoint := ServiceStatus.dwCheckPoint;
            Sleep(ServiceStatus.dwWaitHint);
            if (not QueryServiceStatus(h_svc,ServiceStatus)) then
              // couldn't check status
              break;
            if (ServiceStatus.dwCheckPoint < dwCheckPoint)then
              break;
          end;
        end;
      end;
      CloseServiceHandle(h_svc);
    end;
    CloseServiceHandle(h_manager);
  end;

  Result := (SERVICE_STOPPED = ServiceStatus.dwCurrentState);
end;
Gruß,
Tom
Tom Peiffer
  Mit Zitat antworten Zitat
Delphi-Coder

Registriert seit: 8. Jan 2003
Ort: Greifswald / Stralsund
151 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 12. Apr 2003, 08:52
Danke für die schnelle Antwort! Was muss ich denn für die Variable aMachine an die Funktion übergeben?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 12. Apr 2003, 11:47
Einen Punkt '.', wenn es der gleiche Rechner ist sollte genügen.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Delphi-Coder

Registriert seit: 8. Jan 2003
Ort: Greifswald / Stralsund
151 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 12. Apr 2003, 12:30
Danke für die Hilfe! Es gibt da nur ein kleines Problem: Ich bin nicht als Admin eingeloggt und hab nicht die Berechtigung einen Service zu beenden!!! Gibt es da wirklich keinen anderen Weg???
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 12. Apr 2003, 12:39
Zitat von Delphi-Coder:
hab nicht die Berechtigung einen Service zu beenden!!! Gibt es da wirklich keinen anderen Weg???
Nein, dafür sind die Rechte ja geschaffen worden

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
RobertS
(Gast)

n/a Beiträge
 
#7

Re: NT Service unter XP beenden?

  Alt 27. Jul 2003, 10:28
Huhu,

also ich habe mir auch mal den Code vorgenommen und versucht einen Service zu starten, leider passiert garnichts.

Muss ich bei Servie Name den Namen übergeben den ich auch bei den Diensten angezeigt bekomme? Also z.B "pcAnywhere Host Service"

Danke im voraus
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#8

Re: NT Service unter XP beenden?

  Alt 27. Jul 2003, 10:34
Nein, den Schlüsselnamen eines Unterschlüssels von:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es
mußt du angeben. Da liegen all die Services

PS: Wenn du Debugrechte hast, kannste dir SYSTEM-Rechte holen und dann den Service starten/stoppen.
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#9

Re: NT Service unter XP beenden?

  Alt 27. Jul 2003, 12:52
Sofern du das SeDebugPrivilege hast (und auch aktiviert hast) kannst du dir ein gültiges Process-Handle auf den Service holen und ihn per TerminateProcess abschießen...
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#10

Re: NT Service unter XP beenden?

  Alt 27. Jul 2003, 12:53
Zitat von dReM2nUtD3yZYpRco7D6ZOA:
PS: Wenn du Debugrechte hast, kannste dir SYSTEM-Rechte holen und dann den Service starten/stoppen.
Aso? Davon hab ich noch nix gehört... wie soll denn das gehn?
Manuel Pöter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz