这(编辑:我在scope.Connect();和{catch ...)
之间粘贴整个代码var Query = new SelectQuery("SELECT LogonId FROM Win32_LogonSession Where LogonType=2");
var Searcher = new ManagementObjectSearcher(scope, Query);
var regName = new Regex(@"(?<=Name="").*(?="")");
foreach (ManagementObject WmiObject in Searcher.Get())
{
foreach (ManagementObject LWmiObject in WmiObject.GetRelationships("Win32_LoggedOnUser"))
{
users.Add(regName.Match(LWmiObject["Antecedent"].ToString()).Value);
}
}
正在查询已登录的用户,但是我想快速使用它,并且由于服务器设置我无法改变,有时我会获得更多用户,例如更新服务或安全服务用户。他们看起来像#34;正常&#34;用户因此,据我所知,不可能过滤它们。
所以目标是选择第一条记录。我怎样才能做到这一点?我正在考虑SQL中的LIM#或TOP的C#版本。
谢谢
答案 0 :(得分:1)
如果我了解您正在尝试做的事情,您可以像这样获得第一个登录用户。
ManagementObject LWmiObject = WmiObject.GetRelationships("Win32_LoggedOnUser").First();
答案 1 :(得分:0)
我不明白你在寻找什么,但我认为这解决了这个问题。
var users = Searcher.Get().Cast<ManagementObject>()
.Select(wmi => wmi.GetRelationships("Win32_LoggedOnUser")
.Cast<ManagementObject>()
.Select(lWmi => regName.Match(lWmi["Antecedent"].ToString()))
.Where(m => m.Success)
.Select(u => u.Value)
.FirstOrDefault());