我有一项 Windows 服务,需要按需访问远程 CIFS 共享。每当它需要访问共享时,它首先尝试使用提供的凭据“挂载”它,
NET USE \\host\share password /USER:user
使用共享的内容,然后删除共享。
NET USE \\host\share /DELETE
目前,该服务仅在首次使用共享时有效。在后续尝试中,它不起作用,并出现以下错误:
NET 失败,退出代码为 2
但是,当从命令行手动运行时,相同的逻辑都可以正常工作;它仅在服务上下文中失败。
我的问题是:有没有更好、更正确的方法来处理 Windows 服务中的网络共享?根据本文,NET USE
不建议在服务中使用,即使不使用驱动器号。NET USE
我应该使用其他替代方法吗,或者服务是否只需要以默认用户以外的用户身份运行LocalSystem
?
理想情况下,只有在直接需要时才可以访问共享;所以如果可能的话,我想保留每次删除共享的逻辑。
答案1
您应该以特定的用户帐户运行该服务,并且该用户帐户应该具有访问共享的权限。
像那样输入用户名和密码是一种非常糟糕的工作方式。不仅对安全性,而且对可移植性和管理性也同样糟糕。