Questione : La domanda di C# WMI per ottenere l'utente entrato corrente non lavora a Windows 7

Ciao, il codice seguente del

The non lavora a Windows 7 ma ad impianti su Windows Xp. Potrebbe chiunque prego dirmi che cosa sono i cambiamenti che devo fare per Windows 7?

Thanks.
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
sistema >using notpretty " del class= " del id= " codeSnippet642192 del
        
class= del

Risposta : La domanda di C# WMI per ottenere l'utente entrato corrente non lavora a Windows 7

Potete provare una domanda di Win32_LogonSession preferibilmente:

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
// aggiunge un riferimento a System.Management.dll al progetto.

using il sistema;
using System.Collections;
using System.Management; 
using System.Text.RegularExpressions;
using System.Collections.Generic;

namespace CSharp.CodeSnippet.WMI
{

    codice categoria pubblico Win32_LogonSession
    {

        stringa pubblica AuthenticationPackage;
        stringa pubblica LogonID;
        LogonEventType pubblico LogonType;
        nome pubblico della stringa;
        StartTime DateTime pubblico;

        enum pubblico LogonEventType
        {
            Sistema = 0,
            Interattivo,
            Rete,
            Gruppo,
            Servizio,
            Procura,
            Sbloccare,
            NetworkClearText,
            NewCredentials,
            RemoteInteractive,
            CachedInteractive,
            CachedRemoteInteractive,
            CachedUnlock
        }

        lista statica pubblica GetList ()
        {
            la domanda della stringa = “seleziona * a partire da Win32_LogonSession„;

            Ricercatore di ManagementObjectSearcher = nuovo ManagementObjectSearcher (domanda);

            ManagementObjectCollection risulta = ricercatore. Ottenere ();

            Elencare la lista = nuova lista (risultati. Conteggio);

            Dizionario userTable = GetLoggedOnUsersTable ();

            foreach (ManagementObject logonCurrent nei risultati)
            {
                Entrata di Win32_LogonSession = nuovo Win32_LogonSession ();

                entry.AuthenticationPackage = (stringa) logonCurrent [“AuthenticationPackage„];
                entry.LogonID = (stringa) logonCurrent [“LogonID„];
                entry.LogonType = (LogonEventType) Convert.ToInt32 (logonCurrent [“LogonType„]);
                entry.StartTime = ConvertFileTime ((stringa) logonCurrent [“StartTime„]);
                se (userTable.ContainsKey (entry.LogonID))
                {
                    entrata. Nome = (stringa) userTable [entry.LogonID];
                }
                lista. Aggiungere (entrata);
            }
            restituire la lista;
        }

        dizionario statico riservato GetLoggedOnUsersTable ()
        {
            la domanda della stringa = “seleziona * a partire da Win32_LoggedOnUser„;

            Ricercatore di ManagementObjectSearcher = nuovo ManagementObjectSearcher (domanda);

            ManagementObjectCollection risulta = ricercatore. Ottenere ();

            Tabella del dizionario = nuovo dizionario (risultati. Conteggio);

            foreach (currentObject di ManagementObject nei risultati)
            {
                mettere insieme il cliente = GetUser (currentObject (della stringa) [“antecedente„]);
                mettere insieme la sessione = GetLogonID (currentObject (della stringa) [“dipendente„]);
                tabella. Aggiungere (sessione, cliente);
            }
            restituire la tabella;
        }

        stringa statica riservata GetLogonID (propertyText della stringa)
        {
            mettere insieme il modello = “LogonId= \„ (? ) \ "" \ \ d+;
            matchID del fiammifero = Regex.Match (propertyText, modello);
            se (matchID.Success)
            {
                matchID.Groups di ritorno [“identificazione„]. Valore;
            }
            altrimenti
            {
                "" di ritorno;
            }
        }

        stringa statica riservata GetUser (propertyText della stringa)
        {
            mettere insieme il modello = “Domain= \„ (? [\ \ D_- di A-Za-z] +) \ “|Name= \„ (? [\ \ S_- \ \ d di A-Za-z] +) \ "";
            dominio = "" della stringa;
            nome = "" della stringa;
            foreach (fiammifero matchCurrent in Regex.Matches (propertyText, modello))
            {
                testo integrale della stringa = matchCurrent.Groups [0]. Valore;
                se (fullText.StartsWith (“dominio„))
                {
                    dominio = matchCurrent.Groups [“dominio„]. Valore;
                }
                altrimenti
                {
                    nome = matchCurrent.Groups [“nome„]. Valore;
                }
            }
            se (dominio. == 0 di lunghezza)
            {
                nome di ritorno;
            }
            altrimenti
            {
                dominio di ritorno + “\ \„ + nome;
            }
        }

        ConvertFileTime DateTime statico riservato (tempo della stringa)
        {
            se (tempo! = posizione di segnale minimo)
            {
                stringa del const FILE_TIME_MASK = “yyyyMMddHHmmss„;
                tempo = tempo. Sottostringa (0, time.IndexOf (“."));
                DateTime.ParseExact di ritorno (tempo, FILE_TIME_MASK, posizione di segnale minimo);
            }
            DateTime.MinValue di ritorno;
        }
    }

}
Altre soluzioni  
 
programming4us programming4us