今天被朋友问到这个问题:一个写好的程序,如果使用Windows Forms的方式,运行是没有问题的。但同样的代码转换为服务之后就发生了无法访问共享文件夹的问题。
我总结几点如下,供大家以后注意参考
1. windows service一般确实不是设计用来访问网络的,它们大多在本机运行。
2. 如果windows service要访问网络资源,则需要配置为network service帐号启动
a) 共享目录的权限中也要添加network service这个特殊帐号。
b) 如果用该帐号,就有一个问题,代码中不应该出现类似c:/data.txt这样的绝对路径,network service的帐号应该是不能识别这样的路径的
3. 还有一个做法就是设置为特定域帐号
a) 我觉得你设置为本地管理员是没有用的,当你的机器不在一个域里面的话
b) 该帐号必须能够在本机能够识别(可以是一个本机帐号,也可以是一个域帐号),