在 Windows 服务中访问网络共享的正确方法

在 Windows 服务中访问网络共享的正确方法

我有一项 Windows 服务,需要按需访问远程 CIFS 共享。每当它需要访问共享时,它首先尝试使用提供的凭据“挂载”它,

NET USE \\host\share password /USER:user

使用共享的内容,然后删除共享。

NET USE \\host\share /DELETE

目前,该服务仅在首次使用共享时有效。在后续尝试中,它不起作用,并出现以下错误:

NET 失败,退出代码为 2

但是,当从命令行手动运行时,相同的逻辑都可以正常工作;它仅在服务上下文中失败。

我的问题是:有没有更好、更正确的方法来处理 Windows 服务中的网络共享?根据本文NET USE不建议在服务中使用,即使不使用驱动器号。NET USE我应该使用其他替代方法吗,或者服务是否只需要以默认用户以外的用户身份运行LocalSystem

理想情况下,只有在直接需要时才可以访问共享;所以如果可能的话,我想保留每次删除共享的逻辑。

答案1

您应该以特定的用户帐户运行该服务,并且该用户帐户应该具有访问共享的权限。

像那样输入用户名和密码是一种非常糟糕的工作方式。不仅对安全性,而且对可移植性和管理性也同样糟糕。

相关内容