Service VB et Utilisateurs [Résolu]

Signaler
Messages postés
122
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
8 août 2014
-
Messages postés
122
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
8 août 2014
-
Bonjour,



J'ai fait une application qui en tourne en tant que service avec l'ocx ntsvc.

Est-il possible de savoir à partir d'un service si :
* un utilisateur est connecté ou pas.
* un utilisateur ferme une session.
* un utilisateur ouvre une session.
* connaitre le compte qui a ouvert une session.

Sachant que l'application tourne sur le compte système, je ne vois pas comment récupérer cette information.

Merci d'avance pour tous les commentaires et toutes les réponses données.

6 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
salut....

avec WMI je liste mes types de comptes :
'   [WMI Win32 Helper -
Win32_SystemAccount]
    On Local Error Resume Next
    Dim sComputerName as String, WMI_Obj as Object, WMI_ObjProps as Object, ObjClsItem as Object
    sComputerName = Environ$("COMPUTERNAME")
    Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
    Set WMI_ObjProps = WMI_Obj.ExecQuery("SELECT * FROM Win32_SystemAccount", , 48)

    For Each ObjClsItem in WMI_ObjProps
        Debug.Print "Caption : " & ObjClsItem.Caption
        Debug.Print "Description :
" & ObjClsItem.Description
        Debug.Print "Domain : " & ObjClsItem.Domain
        Debug.Print "InstallDate :
" & ObjClsItem.InstallDate
        Debug.Print "LocalAccount :
" & ObjClsItem.LocalAccount
        Debug.Print "Name : " & ObjClsItem.Name
        Debug.Print "SID : " & ObjClsItem.SID
        Debug.Print "SIDType : " & ObjClsItem.SIDType
        Debug.Print "Status : " & ObjClsItem.Status
    Next ObjClsItem

    Set ObjClsItem = Nothing
    Set WMI_ObjProps = Nothing
    Set WMI_Obj = Nothing

c'est bien le nom de mon PC (pas mon compte) qui apparaît dans les groupes TACHE, SERVICE et SYSTEM

ensuite je liste mes services avec leurs "auteurs" on va dire :
'   [WMI Win32 Helper -
Win32_SystemServices]
    On Local Error Resume Next
    Dim sComputerName as String, WMI_Obj as Object, WMI_ObjProps as Object, ObjClsItem as Object
    sComputerName = Environ$("COMPUTERNAME")
    Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
    Set WMI_ObjProps = WMI_Obj.ExecQuery("SELECT * FROM Win32_SystemServices", , 48)

    For Each ObjClsItem in WMI_ObjProps
        Debug.Print "GroupComponent :
" & ObjClsItem.GroupComponent
        Debug.Print "PartComponent :
" & ObjClsItem.PartComponent
    Next ObjClsItem

    Set ObjClsItem = Nothing
    Set WMI_ObjProps = Nothing
    Set WMI_Obj = Nothing

le nom correspond (PC)

enfin je vérifie tous mes services :
'   [WMI Win32 Helper - Win32_Service]
    On Local Error Resume Next
    Dim sComputerName as String, WMI_Obj as Object, WMI_ObjProps as Object, ObjClsItem as Object
    sComputerName = Environ$("COMPUTERNAME")
    Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "\root\cimv2")
    Set WMI_ObjProps = WMI_Obj.ExecQuery("SELECT * FROM Win32_Service", , 48)

    For Each ObjClsItem in WMI_ObjProps
        Debug.Print "AcceptPause :
" & ObjClsItem.AcceptPause
        Debug.Print "AcceptStop :
" & ObjClsItem.AcceptStop
        Debug.Print "Caption : " & ObjClsItem.Caption
        Debug.Print "CheckPoint :
" & ObjClsItem.CheckPoint
        Debug.Print "CreationClassName :
" & ObjClsItem.CreationClassName
        Debug.Print "Description :
" & ObjClsItem.Description
        Debug.Print "DesktopInteract :
" & ObjClsItem.DesktopInteract
        Debug.Print "DisplayName :
" & ObjClsItem.DisplayName
        Debug.Print "ErrorControl :
" & ObjClsItem.ErrorControl
        Debug.Print "ExitCode : " & ObjClsItem.ExitCode
        Debug.Print "InstallDate :
" & ObjClsItem.InstallDate
        Debug.Print "Name : " & ObjClsItem.Name
        Debug.Print "PathName : " & ObjClsItem.PathName
        Debug.Print "ProcessId : " & ObjClsItem.ProcessId
        Debug.Print "ServiceSpecificExitCode :
" & ObjClsItem.ServiceSpecificExitCode
        Debug.Print "ServiceType :
" & ObjClsItem.ServiceType
        Debug.Print "Started : " & ObjClsItem.Started
        Debug.Print "StartMode : " & ObjClsItem.StartMode
        Debug.Print "StartName : " & ObjClsItem.StartName
        Debug.Print "State : " & ObjClsItem.State
        Debug.Print "Status : " & ObjClsItem.Status
        Debug.Print "SystemCreationClassName :
" & ObjClsItem.SystemCreationClassName
        Debug.Print "SystemName :
" & ObjClsItem.SystemName
        Debug.Print "TagId : " & ObjClsItem.TagId
        Debug.Print "WaitHint : " & ObjClsItem.WaitHint
    Next ObjClsItem

    Set ObjClsItem = Nothing
    Set WMI_ObjProps = Nothing
    Set WMI_Obj = Nothing

c'est toujours le nom du PC...

bref, çà devrait te servir de piste de départ ;)

pour d'infos sur le WMI ici

++
PCPT  [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
254
Date d'inscription
jeudi 29 juillet 2004
Statut
Membre
Dernière intervention
2 avril 2010

Salut,

essayes avec le WMI

Swan94
===============Si la réponse vous convient, merci de l'accepter=================
Messages postés
122
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
8 août 2014

Peux-tu m'aiguiller s'il te plait ? merci
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
salut,
qu'est-ce que tu appelles le "compte système"?
compte sauvegarde de dell ?
administrateur local?
compte avec pouvoir(s)?

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
122
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
8 août 2014

Le compte système est celui utilisé pour lancer la plupart des services dont le planificateur des taches.

Si tu utilises les taches planifiés, tu spécifies un compte spécifique pour l'exécution de ta commande, mais si tu utilises la commande AT, c'est le compte SYSTEM qui est prise en compte.

Tu peux le voire dans le gestionnaire des taches et dans les propriétés du service des taches planifiées.

En ce qui concerne l'interrogation par le WMI, j'ai commencé à chercher mais cela me donne que les informations de la session active, donc le compte système.

Merci d'avance pour les recherches effectuées.
Messages postés
122
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
8 août 2014

Un grand merci d'avance pour les détails donnés.

Je vais me débrouiller avec ca maintenant.

En te remerciant, bonne journée.