![]() |
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Zitat:
Delphi-Quellcode:
Ich wollte den Pfad zu einem Prozess ermitteln, um diesen z.B. neu starten zu können. In einem Forum (ich meine DP, bin mir aber nicht sicher) habe ich dann den Tipp gefunden, dass man zu die geöffneten Module auslesen kann. Das erste Modul ist dann immer die Prozessdatei selbst, da diese immer als erste geöffnet werden muss, bevor weitere Module geladen werden können. Bei einem Dienst steht in dort jedoch Speichermüll. So hat man ein weiteres Indiz, ob es sich um einen Dienst handelt.
function GetExecutableFromPID(dwProcessID: DWord): String;
var FSnapshotHandle: THandle; FModuleEntry32: TModuleEntry32; begin Result := ''; begin FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID); FModuleEntry32.dwSize := Sizeof(FModuleEntry32); Module32First(FSnapshotHandle, FModuleEntry32); if FileExists(FModuleEntry32.szExePath) = True then Result := FModuleEntry32.szExePath else Result := ''; CloseHandle(FSnapshotHandle); end; end; Zitat:
Zitat:
|
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Zitat:
![]() |
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Das kommt davon, wenn man (== "ich") zu faul ist ins PSDK zu gucken :roll: :lol: :mrgreen: :zwinker:
|
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Zitat:
|
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Kleiner Tipp am Rande: Nimm gleich die Unicode-Variante (ich hab hier einen japanischen Systemdienst der von den meisten ANSI-Programmen nicht angesprochen werden kann).
|
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Zitat:
|
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Ich habe jetzte nicht den ganzen Thread gelesen....
Aber möglich wäre zu Testen ob der Pfand des Programmes wo Du wissen möchstes ob es ein Dienst ist oder nicht in der Registry findest bei den Servicen. |
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Zitat:
%SystemRoot%\System32\\drivers\etc\\..\..\kernel32 .dll C:\Windows\System32\kernel32.dll Diverse Funktionen ala GetFullPathName() könnten helfen, aber manches wird IMO nicht aufgelöst. Dann hätten wir noch \SystemRoot\System32\kernel32.dll ... das ist der Object Manager Namespace ... was nu? Und das ist ja nur die Spitze des Eisbergs, siehe oben. Registry ist nicht die korrekte Methode. Der Einzige, der weiß welcher Prozeß ein Service ist, ist der SCM. |
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Ja klar ServiceMgr auch wenn ich Registry geschrieben habe. Nur der mach auch nix weiter als dort nach den Infos zu suchen.
|
Re: Ermitteln ob ein Programm oder Prozess ein Dienst ist
Zitat:
Zitat:
ps: ganz davon abgesehen, dass Microsoft die Art der Speicherung jederzeit ändern könnte (unter Vista wurde bereits viel geändert - mit hart-codierten Pfaden kommt man da nicht weit) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz