c# - 如何从 .NET 中的 Windows 服务获取当前记录的用户名?

标签 c# visual-studio-2010 windows-services

我有一个 Windows 服务需要当前登录的用户名。我尝试了 System.Environment.UserName、Windows 身份和 Windows 窗体身份验证,但都以用户身份返回“System”,因为我的服务在系统特权下运行。有没有办法在不更改我的服务帐户类型的情况下获取当前登录的用户名?

最佳答案

这是一个 WMI获取用户名的查询:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem");
ManagementObjectCollection collection = searcher.Get();
string username = (string)collection.Cast<ManagementBaseObject>().First()["UserName"];

您需要在 References 下手动添加 System.Management

关于c# - 如何从 .NET 中的 Windows 服务获取当前记录的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218778/

相关文章:

c# - 在 C# .NET 中创建 Windows 服务的最佳指南?

c# - `IEnumerable<T>` 文件的内容的 `.csv` 类型应该是什么?

visual-studio-2010 - 将 MVC 2 ASPX 转换为 MVC 4 Razor View 引擎

visual-studio-2010 - github 有 Visual Studio 插件吗?

c# - VS2010 'Show Derived Types' 类 View 中缺少选项

windows - 如何在 Windows 中获取当前的交互式用户 session 数?

c# - VS2010中Topshelf托管应用调试

c# - 将点的 ArrayList 转换为字节数组以存储在 SQL 数据库中

c# - 表达式树不能包含对局部函数的引用

c# - 将c#连接到SQL服务器的教程