To pytanie kładzie nacisk na drugą połowę.
Wiem, jak wyodrębnić listę wszystkich usług i jak filtrować według ich stanu. Jednak nie jestem pewien, jak to zrobić, aby wyodrębnić konto użytkownika, usługa jest ustawiona jako „uruchom jako”.
Nie mam opcji korzystania z PowerShell (niestety), więc szukam natywnego sposobu CMD. Zakładałem, że będzie sposób na użycie polecenia sc query, ale wszystkie te listy to:
SERVICE_NAME
TYPE
STATE
WIN32_EXIT_CODE
SERVICE_EXIT_CODE
CHECKPOINT
WAIT_HINT
Do Twojej wiadomości - OS to Windows 2003 SP2 i potrzebuję tych informacji dla wszystkich usług, więc jest to długi proces, jeśli muszę to zrobić ręcznie dla każdej z nich.
sc query
iwmic
?Możesz to zrobić w dwóch krokach:
sc \\localhost query | findstr SERVICE_NAME
sc \\localhost qc
+ SERVICE_NAME +| findstr SERVICE_START_NAME
Poleciłbym taki skrypt wsadowy:
To daje takie wyjście:
Oczywiście możesz dalej wyczyścić to wyjście lub zapisać do pliku CSV w dowolny sposób.
źródło
CMD nie ma na to własnego sposobu. SC i NET to wbudowane aplikacje, które są dostarczane z systemem Windows, ale to nie znaczy, że są natywne. W każdej chwili administrator może je usunąć, a nawet nawet CMD pozostaje w ciemności.
sc sdshow dostarczy ci deskryptorów bezpieczeństwa, ale skomplikuje to wszystko, jeśli nie wiesz, jak czytać ciągi SDDL.
Najprostszym sposobem jest pobranie Sysinternals PsService.exe z pakietu Narzędzia i użycie go jako zabezpieczenia usługi [usługa]. Wyświetli listę SDDL w czytelnym formacie, w tym nazwy kont.
źródło
C:\Windows\System32\sc.exe
dotyczy wszystkich wersji systemu Windows?Chociaż nie możesz używać programu PowerShell, nadal powinieneś być w stanie używać VBScript do pobierania informacji z WMI:
Oto skrypt VBS, który wyświetli listę wszystkich usług i konta, które uruchamiają jako:
Zapisz, a następnie uruchom
cscript ScriptName.vbs
.objService.State
poda ci aktualny stan usługi (ponieważ wspomniałeś, że chcesz go filtrować).Więcej informacji na temat klasy Win32_Service .
źródło