2009-02-05 83 views
2

我试着在“本地系统”中运行服务:没有工作。有没有办法允许Windows服务(非托管C++)在共享网络文件夹上写入文件?

我试着在一个拥有网络共享文件夹权限的帐户中运行服务:没有用。

我是否必须为此创建独立应用程序并以具有网络共享文件夹权限的用户身份启动此应用程序?

感谢,

尼克

+0

您是否尝试使用映射驱动器或使用UNC名称访问共享文件夹?映射驱动器常常失败,因为服务不会在驱动器映射的登录环境下运行。 UNC名称是正确的路线。 – 2009-02-05 23:20:50

回答

0

你都应该情景工作工作。 “本地系统”是您可以授予共享权限的活动目录中的计算机帐户。我不知道为什么它不适合你。但是,这是你能做的。

  • 使用一个regualar帐户(它更容易)。
  • 测试您的应用程序作为控制台应用程序。
  • 调整客户端上的审计以将所有内容记录到安全日志中。它是从本地安全策略应用程序完成的。并在服务器上执行相同的操作(如果可以的话)。

这应该足以找到问题。

更新1:在回应我认为是错误的评论(但也许我是...)。注释引用的服务(没有网络访问的服务)称为本地服务帐户(NT AUTHORITY \ LocalService)。它通常用于应用程序池的标识,但可用于服务。它与本地系统帐户不一样。

from msdn

当一个服务, 是一个域成员计算机上的 LocalSystem帐户中运行,服务有 任何网络访问权限授予 计算机帐户,或任何团体其中计算机帐户为 成员。

+0

实际上,它通常不适用于LocalSystem。 Windows从LocalSystem令牌剥离网络特权以防止网络访问作为安全措施。本地系统也不是AD中的真实账户。 – Nick 2009-02-06 06:37:00

+1

你可能是对的;这可能在Windows版本中发生了变化。在NT4中,LocalSystem没有网络访问权限,但是在帐户分割之前。我不确定默认访问是什么,但它看起来可能在2000+以上。 – Nick 2009-02-06 17:46:32

0

运行服务的帐户具有共享文件夹确实工作在网络上的权利。 。我有一个服务就是这么做的。

它不一定会在Novell公司的Netware股份或其他“非标”股(我们曾与这个麻烦,在过去,但现在的Netware是几乎无关。)

2

您应该使用UNC路径(如Scott建议的),并在可以访问网络资源的明确帐户下运行系统;这应该工作。

可能在LocalSystem下将不起作用,因为这是Windows中的一个特殊用户帐户,只有本地系统访问权限。LocalSystem在NT4中没有网络访问权限,并且在2000年以后,它被视为计算机帐户用于网络访问目的,并受到本地安全策略中的访问限制。有关更多信息,请参阅this page

简短回答:使用明确的帐户来运行有权访问UNC路径的服务。 :)

相关问题