【问题标题】:What would Environment.UserName return when used in a Windows Service [duplicate]在 Windows 服务中使用时 Environment.UserName 会返回什么 [重复]
【发布时间】:2021-11-26 23:46:50
【问题描述】:

如果我没记错的话,窗口服务是在计算机启动时启动的。所以,如果我在用户登录之前尝试获取Environment.UserName,它会返回一些东西还是会抛出异常?如果是前者,它会返回什么?

【问题讨论】:

  • 你尝试这个时发生了什么?
  • 一般来说,服务不会加载用户配置文件。无论用户是否登录,服务都不会看到“用户”,除非它看起来比只看Environment.UserName
  • 即使一个/多个用户登录,调用 Environment.Username 的服务也不会获取登录用户,它会获取运行该服务的帐户的用户名

标签: c# windows-services


【解决方案1】:

在 Windows 中运行的任何东西都是作为某个帐户执行的,服务也不例外——具体哪个帐户取决于服务的启动和配置方式。

查看这里了解更多信息:https://docs.microsoft.com/en-us/windows/win32/services/service-user-accounts

【讨论】:

  • 但是,服务(通常)不加载用户配置文件。您可以看到令牌(可能只是 Network Service),但几乎没有其他内容
  • @Flydog57 根据链接的 Microsoft 文档:“服务控制管理器 (SCM) 自动加载用户配置文件。”
  • @MickyD 你说得对,我已经更新了我的答案
  • 太好了,感谢编辑+1
猜你喜欢
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 2018-03-11
  • 1970-01-01
  • 2019-12-08
相关资源
最近更新 更多