从Windows服务访问共享文件夹中的文件

时间:2012-11-01 14:12:55

标签: windows-services

我在.Net Framework 2.0的XP OS上有一个Windows服务,它访问文件夹并从中读取文件以将其加载到数据库中。
共享文件夹具有“Everyone”权限,可以完全控制所有子文件夹。和服务在“本地系统帐户”上运行。并且当前系统使用管理员帐户运行。
堆栈跟踪是:

Message : Error while searching for files in : \\nw1\data\nov2012

Access to the path '\\nw1\data\nov2012' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption)
   at System.IO.DirectoryInfo.GetFiles(String searchPattern, SearchOption searchOption)
   at System.IO.DirectoryInfo.GetFiles()
   at MyWinApp.Winservice1.SearchFiles(String imp, FileFolder objFile)

编辑:我在MSDN上发现“LocalSystem帐户在本地计算机上拥有广泛的权限”但不确定为什么它无法访问网络共享文件夹

任何人都可以建议溶解这个问题吗?
谢谢,

2 个答案:

答案 0 :(得分:0)

我在互联网上搜索但无论如何我发现无论如何我必须提供用户名/密码才能为Windows服务提供适当的权限以访问网络共享文件夹(直接访问Windows服务属性或在给定here的Windows服务代码中,该线程中的代码是here)。
所以为了让它现在正常工作我手动设置用户名/密码到服务属性。

答案 1 :(得分:0)

如果您使用本地帐户运行服务(我相信我们正在讨论的是Windows),并且本地帐户不属于域或域。 您始终可以在运行服务的计算机上创建本地帐户,并在共享该文件夹的计算机上创建本地帐户。 相同的帐户名,相同的密码。它会起作用