AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Einem Dienst eine Erklärung für die MMC mitgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Einem Dienst eine Erklärung für die MMC mitgeben

Ein Thema von emsländer · begonnen am 23. Okt 2008 · letzter Beitrag vom 23. Okt 2008
Antwort Antwort
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Einem Dienst eine Erklärung für die MMC mitgeben

  Alt 23. Okt 2008, 19:28
Salvete,

so - nun wohl die letzte Geschichte zum Thema Serviceinstaller...

Wenn ich mir die MMC-Dienstekonsole anschaue, so finde ich dort zu allen Diensten eine kurze Anleitung. Leider finde ich keine Möglichkeit bei eigenen Diensten auch eine kurze Erklärung mitzugeben. - Oder weiss da jemand was?

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: Einem Dienst eine Erklärung für die MMC mitgeben

  Alt 23. Okt 2008, 19:49
Das funktioniert so
Delphi-Quellcode:
uses WinSvc;
const
  SERVICE_CONFIG_DESCRIPTION = 1;
  SERVICE_CONFIG_FAILURE_ACTIONS = 2;

type
  TSERVICE_DESCRIPTION = packed record
    lpDescription: PChar;
  end;

  function ChangeServiceConfig2A(hService: HWND; dwInfoLevel: DWord; lpInfo: Pointer): BOOL; stdcall; external 'advapi32.dll';

implementation

procedure SetServiceDescription(ServiceName, Description: String);
var
  lDescription : TSERVICE_DESCRIPTION;
  lManager,
  lServiceHandle : Cardinal;
begin
  lManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if (lManager <> 0) then
  begin
    lServiceHandle := OpenService(lManager, PAnsiChar(ServiceName) , SERVICE_ALL_ACCESS);
    if (lServiceHandle <> 0) then
    begin
      lDescription.lpDescription := PAnsiChar(Description);
      ChangeServiceConfig2A(lServiceHandle, SERVICE_CONFIG_DESCRIPTION, @lDescription);
      CloseServiceHandle(lServiceHandle);
    end;
    CloseServiceHandle(lManager);
  end;
end;
Ich hoffe, dass ich nichts vergessen habe.
Die Funktion "SetServiceDescription" musst Du natürlich auch nocj irgendwo definieren.

Grüße Sven
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Einem Dienst eine Erklärung für die MMC mitgeben

  Alt 23. Okt 2008, 19:51
Der Standardservice bietet keine Möglichkeit eine Beschreibung anzugeben. Diese habe ich bisher daher über die Apifunktion selbst gesetzt:
Delphi-Quellcode:
[...]
const
  SERVICE_CONFIG_DESCRIPTION = 1;

type
  TSERVICE_DESCRIPTION = packed record
    lpDescription: PChar;
  end;
[...]
  function ChangeServiceConfig2A(hService: HWND; dwInfoLevel: DWord; lpInfo: Pointer): BOOL; stdcall; external 'advapi32.dll';
[...]
procedure TYourServiceClass.ServiceAfterInstall(Sender: TService);
var
  lDescription : TSERVICE_DESCRIPTION;
  lManager,
  lServiceHandle : Cardinal;
begin
  lManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if (lManager <> 0) then
  begin
    lServiceHandle := OpenService(lManager, PChar(Self.Name), SERVICE_ALL_ACCESS);
    if (lServiceHandle <> 0) then
    begin
      lDescription.lpDescription := 'Deine Beschreibung';
      ChangeServiceConfig2A(lServiceHandle, SERVICE_CONFIG_DESCRIPTION, @lDescription);
      CloseServiceHandle(lServiceHandle);
    end;
    CloseServiceHandle(lManager);
  end;
end;
@SvB: Woher hast du den Quelltext? Der sieht ja 1 zu 1 aus wie der aus meinem Projekt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Einem Dienst eine Erklärung für die MMC mitgeben

  Alt 23. Okt 2008, 20:09
@SirThornberry:
Ich hatte gerade meine VM mit Delphi runtergefahren und wollte alles ausmachen, dann hab ich es aber noch mal angeschmissen.
Ich musste mich vor ca. zwei Monaten mal mit Services auseinandersetzen und es müsste von diesem Beitrag gewesen sein. Zum Glück hatte ich mir die URL in den Quelltext eingetragen, sonst hätte ich es jetzt nicht mehr gewusst, bzw. rausbekommen.Wie erstelle ich einen Dienst für WinNT / Win2000 / Win. Auf der ersten Seite ganz unten. Das Beispiel war von Dir.
Ich habs für mich noch mal etwas angepasst.

Dankeschön noch mal.

Grüße Sven
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Einem Dienst eine Erklärung für die MMC mitgeben

  Alt 23. Okt 2008, 20:13
Und ich dachte schon ich bin im falschen Film und hab den unterbewusst selbst irgendwo aufgesammelt *g*
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#6

Re: Einem Dienst eine Erklärung für die MMC mitgeben

  Alt 23. Okt 2008, 20:18
Zitat von SirThornberry:
Der Standardservice bietet keine Möglichkeit eine Beschreibung anzugeben. Diese habe ich bisher daher über die Apifunktion selbst gesetzt:
Delphi-Quellcode:
[...]
const
  SERVICE_CONFIG_DESCRIPTION = 1;

type
  TSERVICE_DESCRIPTION = packed record
    lpDescription: PChar;
  end;
[...]
  function ChangeServiceConfig2A(hService: HWND; dwInfoLevel: DWord; lpInfo: Pointer): BOOL; stdcall; external 'advapi32.dll';
[...]
procedure TYourServiceClass.ServiceAfterInstall(Sender: TService);
var
  lDescription : TSERVICE_DESCRIPTION;
  lManager,
  lServiceHandle : Cardinal;
begin
  lManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
  if (lManager <> 0) then
  begin
    lServiceHandle := OpenService(lManager, PChar(Self.Name), SERVICE_ALL_ACCESS);
    if (lServiceHandle <> 0) then
    begin
      lDescription.lpDescription := 'Deine Beschreibung';
      ChangeServiceConfig2A(lServiceHandle, SERVICE_CONFIG_DESCRIPTION, @lDescription);
      CloseServiceHandle(lServiceHandle);
    end;
    CloseServiceHandle(lManager);
  end;
end;
@SvB: Woher hast du den Quelltext? Der sieht ja 1 zu 1 aus wie der aus meinem Projekt.
Hi,

vielen Dank. Verrätst Du mir auch noch, welche Unit ich für "OpenSCManager" etc. einbinden muss?

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

Re: Einem Dienst eine Erklärung für die MMC mitgeben

  Alt 23. Okt 2008, 20:23
Ich denke, wie ich es bei mir mit reingeschrieben habe: WinSvc
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#8

Re: Einem Dienst eine Erklärung für die MMC mitgeben

  Alt 23. Okt 2008, 20:24
Zitat von SvB:
Ich denke, wie ich es bei mir mit reingeschrieben habe: WinSvc
Das wars!!!!

Super - vielen Dank!

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:05 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