Wie eine Beschreibung für TService erzeugen
Hi Leute,
ich habe einen Dienst unter Verwendung der Komponente TService erstellt. Jetzt möchte ich, dass in der Windows-Anzeige "Dienste" auch eine Beschreibubg zum Dienst zu sehen ist. Leider gibts zu TService keine Property "Description" oder so. Hat jemand vielleicht eine Idee ? Gruß Manuel |
Re: Wie eine Beschreibung für TService erzeugen
Ich kenne keine VCL Funktion. Kannst du aber manuell nachdem Ereignis AfterInstall selber in die Registry schreiben.
Delphi-Quellcode:
procedure TService1.ServiceAfterInstall(Sender: TService);
begin with TRegistry.Create(KEY_READ or KEY_WRITE) do try RootKey := HKEY_LOCAL_MACHINE; if OpenKey('SYSTEM\CurrentControlSet\Services\' + Name, False) then WriteString('Description', 'Meine Beschreibung'); finally Free; end; end; |
Re: Wie eine Beschreibung für TService erzeugen
Ich würde empfehlen, den dokumentierten Weg zu nehmen, und das ist die Verwendung von ChangeServiceConfig2
Hier ein Auszug aus einer Klasse, die ich mal geschrieben habe:
Delphi-Quellcode:
FhService ist hier das Handle des geöffneten Dienstes.
procedure TServiceInstaller.SetDescription(const Value: String);
var sd: TServiceDescription; begin if FServiceOpened then begin sd.lpDescription := PChar(Value); ChangeServiceConfig2(FhService, SERVICE_CONFIG_DESCRIPTION, @sd); FDescription := Value; end; end; Eventuell musst du dir noch die Funktionsdeklaration und den Typ TServiceDescription importieren:
Delphi-Quellcode:
unit Winscv_fragment;
interface uses Winsvc, Windows; function ChangeServiceConfig2A(hService: SC_HANDLE; dwInfoLevel: DWord; lpInfo: Pointer): BOOL; stdcall; function ChangeServiceConfig2W(hService: SC_HANDLE; dwInfoLevel: DWord; lpInfo: Pointer): BOOL; stdcall; function ChangeServiceConfig2(hService: SC_HANDLE; dwInfoLevel: DWord; lpInfo: Pointer): BOOL; stdcall; type _SERVICE_DESCRIPTIONA = packed record lpDescription: PChar; end; TServiceDescriptionA = _SERVICE_DESCRIPTIONA; PServiceDescriptionA = ^TServiceDescriptionA; _SERVICE_DESCRIPTIONW = packed record lpDescription: PWChar; end; TServiceDescriptionW = _SERVICE_DESCRIPTIONW; PServiceDescriptionW = ^TServiceDescriptionW; //we use the ANSI version TServiceDescription = TServiceDescriptionA; const SERVICE_CONFIG_DESCRIPTION = 1; SERVICE_CONFIG_FAILURE_ACTIONS = 2; implementation function ChangeServiceConfig2A; external advapi32 name 'ChangeServiceConfig2A'; function ChangeServiceConfig2W; external advapi32 name 'ChangeServiceConfig2W'; function ChangeServiceConfig2; external advapi32 name 'ChangeServiceConfig2A'; end. |
Re: Wie eine Beschreibung für TService erzeugen
Zitat:
|
Re: Wie eine Beschreibung für TService erzeugen
Zitat:
...:cat:... |
Re: Wie eine Beschreibung für TService erzeugen
Zitat:
Zitat:
|
Re: Wie eine Beschreibung für TService erzeugen
Also erstmal danke für die vielen Antworten. :thumb:
Der Service wird nicht in NT 4 Umgebungen genutzt werden. Daher ist dieses Problem schon mal aussen vor. Die beiden anderen Lösungen werd ich gleich ausprobieren... Gruß Manuel |
Re: Wie eine Beschreibung für TService erzeugen
Hallo,
also kann man sagen am besten ist, man schreibts direkt in die registry dann funktionierts immer ... |
Re: Wie eine Beschreibung für TService erzeugen
Zitat:
...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 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