Win2003 Services exportieren

kiefer

New Member
Guten Tag,

ist es möglich ohne externe Programme die Services/Dienste von Windows in z.B. eine .txt zu exportieren?

Mir geht es hierbei um alle Services, die man sieht wenn man Systemsteuerung/Verwaltung/Dienste aufgerufen hat. Heißt die, die im Status gestartet und gestoppt sind und die als Autostarttyp Automatisch/Manuell und Deaktiviert haben. Zusätzlich sollte man noch den Pfad zu der .exe-Datei und den Service sehen.

Eben eine komplette Ansicht aller Services.

Ich weiß, dass man dieses durch externe tools erreichen kann, aber ich kenne nur tools, die mir momentan laufende Prozesse ausgeben, die im Autostart sind. Wenn man das Services-Fenster aufgerufen hat, kann man die Liste zwar exportieren, aber erstens ist dies dann sehr unübersichtlich und zweitens wird der Pfad zur .exe nicht mit ausgegeben.

Ist es also möglich, eine Liste alles Services mit Servicename, Name und pfad zur .exe zu exportieren?

Danke für Hilfe

mfg
 
Last edited by a moderator:
Moin.

Mir geht es hierbei um alle Services, die man sieht wenn man Systemsteuerung/Verwaltung/Dienste aufgerufen hat.

Eben eine komplette Ansicht aller Services.

Das widerspricht sich. Du siehst nicht alle Services in Systemsteuerung/Verwaltung/Dienste.

Alle Dienste siehst du in der Registry unter HKLM\System\CurrentControlSet\Services.

Wie gut kennst du dich mit Scripting aus? State-of-the-Art wäre ein kleiner 2-Zeiler in PowerShell.
Aber selbst in einfachen CMD-Befehlen lässt sich das realisieren.
Wenn man z.B. die Registry durchsuchen möchte, nutzt man den Befehl "reg query".

Code:
reg query HKLM\System\CurrentControlSet\Services

Somit hast du schon mal eine Liste aller Services.

Als nächstes muss man herausfinden, wie man an die .exe kommt, welcher ein Dienst aufruft. Dazu wirf einfach mal einen Blick in die Registry.
Du wirst sehen, dass es Services gibt, bei denen steht im Key "ImagePath" ein Pfad mit einer .exe drin. Bei einigen Services gibt es diesen Key aber nicht.
Dieser Umstand soll aber erstmal egal sein.

Auf der Befehlszeile würde dies dann z.B. so aussehen:
(Spooler=Druckerwarteschlange)
Code:
reg query HKLM\System\CurrentControlSet\Services\Spooler /v ImagePath

Somit hast du jetzt ein Beispiel, wie man für einen bestimmten Service den ImagePath anzeigen kann. Wenn man das nun für alle Services umsetzen möchte, dann kann man sich einer for-do-Schleife bedienen.

Wir wissen nun, dass ein 'reg query HKLM\System\CurrentControlSet\Services' alle Serives anzeigt. Das Ausgabeformat ist aber etwas unübersichtlich. Uns interessiert nur der letzte Teil der Ausgabe. Also filtern wir das mal aus:

Code:
for /f "tokens=5,5* delims=\" %i in ('reg query HKLM\System\CurrentControlSet\Services') do @echo %i

Die Ausgabe zeigt dir nun also alle Services an, es wird eine Variable %i geschrieben.
Die nehmen wir mit und anstatt eines simplen "echo" ersetzen wir dies durch ein "reg query" auf den ImagePath.

Code:
for /f "tokens=5,5* delims=\" %i in ('reg query HKLM\System\
CurrentControlSet\Services') do @echo %i & @reg query HKLM\System\CurrentControlSet\Services\%i | find "ImagePath"

Hieran könnte man sich jetzt noch weiter verkünzeln und z.B. weitere Filter einbauen. Aber für die Befehlszeile wird das langsam zu viel... :eek:

Also schwenken wir mal auf VBScript um.
Hier muss man allerdings etwas KnowHow mitbringen. Ich werfe mal dieses Script in die Runde. Wenn man sich den Code ansieht, ist er eigentlich fast selbsterklärend:

Code:
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile("c:\services.txt", ForWriting, True)

'objLogFile.Write ("Service Name, Service Displayname, ImagePath ") 
'objLogFile.Writeline

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Set colListOfServices = objWMIService.ExecQuery ("Select * from Win32_Service")

For Each objService in colListOfServices
    objLogFile.Write(objService.Name) & ", " 
    objLogFile.Write(objService.DisplayName) & ", " 
    objLogFile.Write(objService.PathName) 
    objLogFile.writeline
Next
objLogFile.Close

Ist es also möglich, eine Liste alles Services mit Servicename, Name und pfad zur .exe zu exportieren?

Ja. ;)
 
Ich bin überrascht ;)

Vielen Dank für diese ausführliche Antwort!!! Alle Fragen sind beantwortet :)

Erledigt.

mfg
 
Back
Top