L'accent de cette question est sur la seconde moitié.
Je sais comment extraire une liste de tous les services et comment filtrer sur leur état. Cependant, ce que je ne sais pas comment faire, c'est d'extraire le compte d'utilisateur que le service est configuré pour "exécuter en tant que".
Je n'ai pas la possibilité d'utiliser PowerShell (malheureusement), donc je recherche une méthode CMD native. J'ai supposé qu'il y aurait un moyen d'utiliser la commande de requête sc mais tout ce qui liste est:
SERVICE_NAME
TYPE
STATE
WIN32_EXIT_CODE
SERVICE_EXIT_CODE
CHECKPOINT
WAIT_HINT
Pour info - Le système d'exploitation est WIndows 2003 SP2 et j'ai besoin de ces informations pour tous les services, c'est donc un processus de longue haleine si je dois le faire manuellement pour chacun d'eux.
sc query
etwmic
?Vous pouvez accomplir cela en deux étapes:
sc \\localhost query | findstr SERVICE_NAME
sc \\localhost qc
+ SERVICE_NAME +| findstr SERVICE_START_NAME
Je recommanderais un script batch comme celui-ci:
Cela vous donne une sortie comme celle-ci:
Bien sûr, vous pouvez nettoyer davantage cette sortie ou écrire dans un fichier CSV de la manière que vous souhaitez.
la source
CMD n'a aucun moyen natif de le faire. SC et NET sont des applications intégrées fournies avec Windows, mais cela ne signifie pas qu'elles sont natives. À tout moment, un administrateur peut les supprimer et même CMD est laissé dans le noir.
sc sdshow est ce qui vous donnera des descripteurs de sécurité, mais cela compliquera les choses si vous ne savez pas lire les chaînes SDDL.
Le moyen le plus simple est d'obtenir Sysinternals PsService.exe à partir du package Tools et de l'utiliser comme sécurité [service] psservice. Il répertorie le SDDL dans un format lisible, y compris les noms de compte.
la source
C:\Windows\System32\sc.exe
pour toutes les versions de Windows?Bien que vous ne puissiez pas utiliser PowerShell, vous devriez toujours pouvoir utiliser VBScript pour extraire les informations de WMI:
Voici un script VBS qui répertoriera tous les services et le compte sous lequel ils démarrent:
Enregistrez-le puis exécutez-le avec
cscript ScriptName.vbs
.objService.State
vous donnerait l'état actuel du service (puisque vous avez mentionné que vous cherchiez à le filtrer).Plus d'informations sur la classe Win32_Service .
la source