Windows服务用户未登录时调用Environment.UserName会返回什么?
Windows服务预登录阶段获取Environment.UserName的结果说明
核心结论
该操作不会抛出异常,返回值完全由Windows服务配置的运行账户决定,和是否有用户完成系统登录没有关联。
不同运行账户对应的返回值
- 若服务配置为内置
LocalSystem(本地系统)账户运行,返回值为SYSTEM - 若服务配置为内置
LocalService账户运行,返回值为LOCAL SERVICE - 若服务配置为内置
NetworkService账户运行,返回值为NETWORK SERVICE - 若服务配置为自定义的本地/域用户账户运行,直接返回对应配置的用户名
补充说明
Windows服务的运行上下文和普通用户的交互式登录会话完全独立,服务的运行身份在服务配置阶段就已经确定,不会随用户登录状态变化。哪怕系统还停留在登录界面、没有任何用户完成登录,只要服务已经启动,就已经运行在对应的账户上下文当中,调用Environment.UserName可以正常读取到服务所属运行账户的用户名,不会触发异常。
内容的提问来源于stack exchange,提问作者Vulc4n
相关产品推荐
相关产品推荐

