Domanda

È sorta la necessità, nel nostro prodotto, per determinare per quanto tempo l'utente corrente è stato effettuato l'accesso a Windows (in particolare, Vista).Sembra che non c'è dritto in avanti funzione API per questo non riuscivo a trovare nulla di rilevante con WMI (anche se io non sono esperto con WMI, quindi potrei essermi perso qualcosa).

Tutte le idee?

È stato utile?

Soluzione

Per persone che non hanno familiarità con WMI (come me), ecco alcuni link:

E qui l'esempio di query Win32_Session da VBS:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set sessions = objWMIService.ExecQuery _
   ("select * from Win32_Session")

For Each objSession in sessions
   Wscript.Echo objSession.StartTime
Next

Allerta 6 sessioni per il mio personal computer, forse si può filtrare per tipo di accesso per elencare solo il real ("interattivo") degli utenti.Io non riuscivo a vedere come è possibile selezionare la sessione di "utente corrente".

[modifica] ed ecco un risultato da Google per il tuo problema: http://forum.sysinternals.com/forum_posts.asp?TID=3755

Altri suggerimenti

In Powershell e WMI, la seguente riga di comando restituirà un elenco di oggetti mostra l'utente e il tempo sono connessi.

Get-WmiObject win32_networkloginprofile | ? {$_.lastlogon -ne $null} | % {[PSCustomObject]@{User=$_.caption; LastLogon=[Management.ManagementDateTimeConverter]::ToDateTime($_.lastlogon)}}

Spiegazione:

  • Recuperare l'elenco degli utenti collegati da WMI
  • Filtrare qualsiasi non-utenti interattivi (rimuove efficacemente NT AUTHORITY\SYSTEM)
  • Riformatta l'utente di accesso e di tempo per migliorare la leggibilità

Riferimenti:

In WMI fare:"select * from Win32_Session" non avrete "Ora di inizio" del valore.

Speranza che aiuta.

Utilizzando WMI, il Win32Session è un ottimo inizio.E, va sottolineato che, se siete su una rete, è possibile utilizzare Win32_NetworkLoginProfile per ottenere tutti i tipi di informazioni.

Set logins = objWMIService.ExecQuery _
   ("select * from Win32_NetworkLoginProfile")
For Each objSession in logins
   Wscript.Echo objSession.LastLogon
Next

Altri pezzi di informazioni che si possono raccogliere includere il nome utente, l'ultima disconnessione, così come i vari profilo connesse.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top