如何从C#的Windows服务中获取已登录用户(交互式用户)和计算机名称。当我尝试使用Environment和其他类来获取已登录用户的名称时,它只会从Windows服务中返回NT AUTHORITY\SYSTEM。
如何从C#的Windows服务中获取已登录用户(交互式用户)和计算机名称。当我尝试使用Environment和其他类来获取已登录用户的名称时,它只会从Windows服务中返回NT AUTHORITY\SYSTEM。
最简单的方法(至少,使用 Visual Studio 2017 Community Edition
和 .Net Framework 4.7
)--
命名空间:System.Security.Principal
代码:
Console.WriteLine(WindowsIdentity.GetCurrent().Name);
ManagementScope ms = new ManagementScope(@"\\.\root\cimv2");
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_ComputerSystem");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(ms, query);
foreach(ManagementObject mo in searcher.Get())
{
Console.WriteLine(mo["UserName"].ToString());
}