【问题标题】:How to access to a shared resource with a windows service using local system user?如何使用本地系统用户通过 Windows 服务访问共享资源?
【发布时间】:2012-03-28 10:07:14
【问题描述】:

我需要使用本地系统用户通过 Windows 服务访问共享资源。我尝试了UserImpersonation 类,但它只适用于调试。当我安装我的服务时,我无法访问共享文件夹。

我已阅读有关此主题的信息,我想知道是否唯一的方法是创建具有网络凭据的用户并使用该用户执行服务。

【问题讨论】:

标签: c# windows-services networkcredentials


【解决方案1】:

您可以让服务在您已为其配置网络访问的帐户(不一定是屏幕截图中的 NetworkService)下运行。为此,请转到您的服务管理器,然后右键单击属性:

访问网络共享时需要考虑两种权限,您必须确保您使用的帐户具有:Share and NTFS permissions

【讨论】:

  • @DavidHeffernan,网络服务只是我在截屏时配置的东西。我只是在回答问题的“以用户身份执行”部分。我会澄清我的答案。
【解决方案2】:

您问题的最后一段包含答案。该服务在特定用户的上下文中运行。您需要确保该用户可以访问相关资源。出于这个原因,仅为特定服务创建专用用户并不少见。

【讨论】:

  • @JotaBe 因为它无法访问共享资源,除非明确授予。
  • 当然,它没有权限,但只有在您授予它们之前。但是,一旦您在网络资源中授予计算机帐户权限,在网络服务帐户下运行的服务将能够访问该资源。我认为网络服务更安全,因为没有用户可以使用该帐户登录,并且需要较少的维护,因为您不必使用密码。
  • @JotaBe 好的,你可以那样做。很多方法都有效,但无论如何我的回答中的第三句话都成立。这就是重点。
猜你喜欢
  • 1970-01-01
  • 2020-08-24
  • 2011-05-25
  • 2010-09-19
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
相关资源
最近更新 更多