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