timemaster
Goto Top

Kann der Anmeldename für einen Windows-Dienst irgenwo abgefragt werden?

Hallo zusammen,

für eine Softwareprogrammierung möchte ich gerne ermitteln, wie sich ein bestimmter Dienst anmeldet (unter dem Reiter "Anmelden als" oder "lokales System" in dem Windows Dienst). Gibt es hierfür eine Variable oder einen Registry-Eintrag zur Dienstanmeldung, der den Wert zurückgeben kann?

Gruß
Bitbutcher1

Content-ID: 255949

Url: https://administrator.de/forum/kann-der-anmeldename-fuer-einen-windows-dienst-irgenwo-abgefragt-werden-255949.html

Ausgedruckt am: 23.12.2024 um 15:12 Uhr

colinardo
Lösung colinardo 26.11.2014, aktualisiert am 27.11.2014 um 15:47:14 Uhr
Goto Top
Hallo Bitbutcher1,
die Dienste liegen in der Registry unter folgendem Pfad:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services
Jeder Dienst bekommt dort einen Unterordner, in dem ein REG_SZ-Wert namens ObjectName liegt welcher den User-Account enthält unter dem der Dienst gestartet wird.

Zusätzlich kannst du die Daten auch via WMI in der Klasse Win32_Service abfragen, hier ein Beispiel mit Powershell:
gwmi Win32_Service -Filter "Name = 'Browser'" | select -Expandproperty StartName
WMI kannst du ja mit jeder Programmiersprache abfragen, deswegen würde ich diese Methode bevorzugen.

Grüße Uwe
timemaster
timemaster 27.11.2014 um 12:00:39 Uhr
Goto Top
Danke Uwe,

das hilft mir schon weiter.
Grundsätzlich würde aber eine direkte Abfragemöglich in .Net schöner sein. Hier gibt es aber scheinbar keine interne Lösung. Ich werde es daher mit WMI versuchen.

Danke und Gruß
Bitbutcher1
colinardo
Lösung colinardo 27.11.2014 aktualisiert um 15:47:08 Uhr
Goto Top
Zitat von @timemaster:
Grundsätzlich würde aber eine direkte Abfragemöglich in .Net schöner sein. Hier gibt es aber scheinbar keine
interne Lösung. Ich werde es daher mit WMI versuchen.
Wieso, WMI-Abfragen sind in .NET problemlos nativ möglich ... hattest ja nicht erwähnt mit welcher Programmiersprache du arbeitest ...
Beispiel:
Const SERVICENAME = "Fax"  
Dim searcher As New System.Management.ManagementObjectSearcher("Select * From Win32_Service where Name='" & SERVICENAME & "'")  
Dim result As System.Management.ManagementObjectCollection = searcher.Get()
For Each obj As Management.ManagementObject In result
 MsgBox("Der Service-Account für den Dienst '" & SERVICENAME & "' lautet '" & obj.GetPropertyValue("StartName").ToString() & "'")  
Next
Grüße Uwe