Именование: root \ cimv2 < /p>
Query: select * Win32_perfrawdata_termservice_terminalservicessessessession
Это код, который делает запрос с использованием system.management:
Код: Выделить всё
internal static List QueryInternal(string scopeNamespace, string query, bool ignoreErrors = false) {
try {
ManagementScope ws = GetManagementScope(scopeNamespace);
if (!ws.IsConnected)
throw new Exception("ManagementScope not connected");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(ws, new ObjectQuery(query));
List results = searcher.Get().Cast().OfType().ToList();
return results;
} catch (Exception e) {
lock (ManagementScopePoolLock) {
logger.Info($"Error - removing all cached scope namespaces - {e.Message}");
ManagementScopePool.Clear();
}
if (!ignoreErrors) {
logger.Error($"WMI QUERY FAILURE: namespace: \"{scopeNamespace}\" query: \"{query}\"");
throw;
} else {
logger.Warn($"WMI QUERY FAILURE: namespace: \"{scopeNamespace}\" query: \"{query}\"");
return new List();
}
}
}
< /code>
Я проверил это также с использованием wmiexplorer.
Какие альтернативы есть для этого класса? Я использую его, чтобы обнаружить, если пользователь полностью вошел или находится на экране блокировки. https://i.sstatic.net/pbvhi1vf.png
Так что кажется, что следующий код ничего не возвращает, даже не ошибка на обновленных машинах:
PerformanceCounterCategory pcc = new PerformanceCounterCategory("Terminal Services Session");
InstanceDataCollectionCollection idColCol = pcc.ReadCategory();
foreach (var idCol in idColCol)
logger.Info($"Instance: {idCol.ToString()}");
Console.WriteLine("FINISHED");
Подробнее здесь: https://stackoverflow.com/questions/796 ... ot-exist-a
Мобильная версия