从Windows服务中检索用户帐户名
答
您的服务正在用户LocalService的上下文中运行。如果要获取登录到交互式/ RDP会话的用户名(可能不存在一个或多个记录的用户),则必须使用PInvoke使用终端服务API。这里是这个的起点:WTSEnumerateSessions
答
我在System.Security.Principal
命名空间中使用这种方法WindowsIdentity.GetCurrent(False).Name
,它的工作。我运行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
您可以指定在该服务将在“登录”的标签运行的帐户运行服务属性对话框。
Windows服务在没有任何用户登录的情况下运行。如果没有用户登录,您希望发生什么?如果有多人登录? – Oded
配置服务时,“登录”选项卡上显示的内容是什么?你有什么特别的尝试? – CoreTech
@Oded是的,Windows服务在没有任何用户登录的情况下运行,但Windows服务需要运行它的帐户。我相信他正在寻找Windows服务正在运行的帐户。 –