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-Key: 255949

Url: https://administrator.de/contentid/255949

Printed on: April 18, 2024 at 07:04 o'clock

Member: colinardo
Solution colinardo Nov 26, 2014, updated at Nov 27, 2014 at 14:47:14 (UTC)
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
Member: timemaster
timemaster Nov 27, 2014 at 11:00:39 (UTC)
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
Member: colinardo
Solution colinardo Nov 27, 2014 updated at 14:47:08 (UTC)
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