Pergunta : A pergunta de C# WMI para começ o usuário entrado atual não trabalha em Windows 7

Olá!, o código de seguimento do

The não trabalha em Windows 7 mas em trabalhos em Windows Xp. Poderia qualquer um por favor dizer me o que são as mudanças que eu preciso de fazer para Windows 7?

Thanks.
class= > " desobstruído " do
> do " codeSnippet " do class= do
class= " lineNumbers " do
class= do
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 " do class= " do id= " codeSnippet642192 do
        
class= do

Resposta : A pergunta de C# WMI para começ o usuário entrado atual não trabalha em Windows 7

Você pode tentar uma pergunta de Win32_LogonSession preferivelmente:

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:
// adiciona uma referência a System.Management.dll ao projeto.

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

namespace CSharp.CodeSnippet.WMI
{

    classe pública Win32_LogonSession
    {

        corda pública AuthenticationPackage;
        corda pública LogonID;
        LogonEventType público LogonType;
        nome público da corda;
        StartTime DateTime público;

        enum público LogonEventType
        {
            Sistema = 0,
            Interativo,
            Rede,
            Grupo,
            Serviço,
            Proxy,
            Destravar,
            NetworkClearText,
            NewCredentials,
            RemoteInteractive,
            CachedInteractive,
            CachedRemoteInteractive,
            CachedUnlock
        }

        lista de estática pública GetList ()
        {
            a pergunta da corda = “seleciona * de Win32_LogonSession”;

            Pesquisador de ManagementObjectSearcher = ManagementObjectSearcher novo (pergunta);

            ManagementObjectCollection resulta = pesquisador. Começ ();

            Alistar a lista = lista nova (resultados. Contagem);

            Dicionário userTable = GetLoggedOnUsersTable ();

            foreach (ManagementObject logonCurrent nos resultados)
            {
                Entrada de Win32_LogonSession = Win32_LogonSession novo ();

                entry.AuthenticationPackage = (corda) logonCurrent [“AuthenticationPackage”];
                entry.LogonID = (corda) logonCurrent [“LogonID”];
                entry.LogonType = (LogonEventType) Convert.ToInt32 (logonCurrent [“LogonType”]);
                entry.StartTime = ConvertFileTime ((corda) logonCurrent [“StartTime”]);
                se (userTable.ContainsKey (entry.LogonID))
                {
                    entrada. Nome = (corda) userTable [entry.LogonID];
                }
                lista. Adicionar (entrada);
            }
            retornar a lista;
        }

        dicionário de estática confidencial GetLoggedOnUsersTable ()
        {
            a pergunta da corda = “seleciona * de Win32_LoggedOnUser”;

            Pesquisador de ManagementObjectSearcher = ManagementObjectSearcher novo (pergunta);

            ManagementObjectCollection resulta = pesquisador. Começ ();

            Tabela do dicionário = dicionário novo (resultados. Contagem);

            foreach (currentObject de ManagementObject nos resultados)
            {
                amarrar o cliente = o GetUser (currentObject (da corda) [“antecedente”]);
                amarrar a sessão = o GetLogonID (currentObject (da corda) [“dependente”]);
                tabela. Adicionar (sessão, cliente);
            }
            retornar a tabela;
        }

        corda de estática confidencial GetLogonID (propertyText da corda)
        {
            amarrar o teste padrão = “LogonId= \” (? ) \ \ d+ \ "";
            matchID do fósforo = Regex.Match (propertyText, teste padrão);
            se (matchID.Success)
            {
                matchID.Groups do retorno [“identificação”]. Valor;
            }
            mais
            {
                "" do retorno;
            }
        }

        corda de estática confidencial GetUser (propertyText da corda)
        {
            amarrar o teste padrão = “Domain= \” (? [\ De A-Za-z \ d_-] +) \ “|Name= \” (? [\ \ De A-Za-z \ d \ s_-] +) \ "";
            domínio = "" da corda;
            nome = "" da corda;
            foreach (fósforo matchCurrent em Regex.Matches (propertyText, teste padrão))
            {
                texto completo da corda = matchCurrent.Groups [0]. Valor;
                se (fullText.StartsWith (“domínio”))
                {
                    domínio = matchCurrent.Groups [“domínio”]. Valor;
                }
                mais
                {
                    nome = matchCurrent.Groups [“nome”]. Valor;
                }
            }
            se (domínio. == 0 do comprimento)
            {
                nome do retorno;
            }
            mais
            {
                domínio do retorno + “\ \” + nome;
            }
        }

        ConvertFileTime DateTime de estática confidencial (tempo da corda)
        {
            se (tempo! = zero)
            {
                corda do const FILE_TIME_MASK = “yyyyMMddHHmmss”;
                tempo = tempo. Substring (0, time.IndexOf (“."));
                DateTime.ParseExact do retorno (tempo, FILE_TIME_MASK, zero);
            }
            DateTime.MinValue do retorno;
        }
    }

}
Outras soluções  
 
programming4us programming4us