首页 > 代码库 > Windows Service 访问远程共享权限设置

Windows Service 访问远程共享权限设置

最近为实现共享目录之间的文件同步,开发了一个Windows Service。

考虑到在拷贝过程中,如果网络忽然抽风访问不了,导致文件拷贝不完整的情况,果断抛弃.Net 自带的 COPY 方法,而使用DOS命令下的XCOPY命令。

嗯。。。。。说干就干。。。

XCOPY方案验证、开发、调试(在自个电脑上建了两个共享目录)。。。。半天时间,全部搞定。貌似事情进展的太顺利了。。。。。

既然本地调试没问题,那就部署到测试环境上吧。好吧。。。问题来了。

同步两个共享目录,居然失败!查看日志,XCOPY的退出码 ExitCode=4,也就是说路径不正确。

奇怪。。。。没理由啊。。。。。。。。在测试服务器上,用 \\IP\\ShareFolder 的方式,都是可以访问的,并且能够正常读写。

把刚才同步失败的XCOPY命令在CMD窗口中运行,居然成功了。。。。。。

看到这估计你也想到了,Windows Service在访问共享的时候,是没有权限的。

谷歌。。。。。谷歌。。。。。。。找到加权限的办法。

参考链接:http://stackoverflow.com/questions/9905281/how-to-access-to-a-shared-resource-with-a-windows-service-using-local-system-use

步骤如下:

1)首先找到具有共享目录读写权限的用户

2)在Windows Service的属性中,选择“登录”选项卡,在“此用户” 下,给一个有共享目录读写权限的用户。

3)点击确定,重新启动服务。

好了,怀着一个激动的心,重新启动,重新同步,继续失败。。。。。。。。。。。。。OH,漏!!!!!!!!!!!!!!

不是说给服务加一个用户就可以了么。。。。。。骗纸。。。。。。。。。

继续谷歌。。。谷歌。。。。谷歌。。。。。。。。。。。。。。。。。。

不得不说,Stackoverflow上面大牛就是多。。。

使用 NET USE 命令 建立与共享的链接

用法 :Net Use \\ServerIP\\ShareFolder Password /USER:User

废话不多说,赶紧试一下。。。。。

命令成功完成。。。。怀着激动的心情,重新启动一下服务。。。。。同步成功!!!