在windows服务程序中位于共享文件夹中的文件的stat()返回错误-1,并且errno为2 (ENOENT)。
共享文件夹存在的系统和运行服务的系统位于同一域中。使用该域中的帐户的有效用户名/paswd登录到服务。
当同一个程序作为EXE运行时,stat()将成功返回(0)。
为什么行为有区别?如何解决这个问题?
发布于 2011-12-29 10:09:21
服务由自己的上下文运行。该上下文不包括对特定用户拥有的任何共享的访问。这不是权限问题,而是名称空间问题。
有很多可能的解决办法。一个是运行网络服务帐户下的服务。另一种方法是让服务用适当的系统呼叫复制挂载本身。
我喜欢的解决方法是使用在用户的应用程序上下文中运行的助手进程。助手进程可以代表服务执行所有文件I/O。
https://serverfault.com/questions/344970
复制相似问题