从Windows服务检索用户帐户名称

时间:2012-01-25 13:10:45

标签: c# .net windows-services

如何从Windows服务获取当前记录的用户帐户名?帐户不是本地帐户 - 它是域帐户。 我尝试的每个方法都不好,只返回LocalService帐户。

2 个答案:

答案 0 :(得分:0)

我确实在WindowsIdentity.GetCurrent(False).Name命名空间中使用了此方法System.Security.Principal并且它有效。我正在运行VS2010和.NET Framework 4

我在服务中添加了一行,将以下字符串写入文本文件:

String.Format("Currently logged on account: {0}", System.Security.Principal.WindowsIdentity.GetCurrent(False).Name)

它返回了运行Windows服务的相应Windows帐户。

在帐户Local Service下运行时,它返回NT AUTHORITY\LOCAL SERVICE

在我的域帐户dom\name.lastname下运行时,它返回DOM\Name.Lastname

您可以在“服务属性”对话框的“登录”选项卡上指定运行服务的帐户。

答案 1 :(得分:-1)

您的服务正在用户LocalService的上下文中运行。如果要将用户的名称记录到interactive / RDP会话(可能没有,一个或多个已记录的用户),则必须使用PInvoke使用终端服务API。以下是此点的起点:WTSEnumerateSessions