安装后运行Windows Service时找不到路径错误的一部分

时间:2018-10-10 06:29:40

标签: c# service window

我有一个machine 1,我有一个共享文件夹,

`\\Machine1HostName\Share`

在其中有一个文件夹Files

现在我将machine 2中的文件夹安装在路径下方,

Z:\Files

我有一个window servivemachine 2中运行,我试图从路径Z:\Files中获取文件。

var sourceFiles = Directory.GetFiles(@"Z:\Files").Select(f => new FileInfo(f));

当我以控制台应用程序的调试模式运行window servive时,没有任何错误,但是当安装并尝试使用local system帐户运行时,我遇到了错误,

Exception - Could not find a part of the path 'Z:\Files'.

这是完整的堆栈跟踪,

Exception -    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileSystemEnumerableIterator`1.CommonInit()
   at System.IO.FileSystemEnumerableIterator`1..ctor(String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost)
   at System.IO.Directory.GetFiles(String path)
   at ConsoleApp6.ConverterService.Start() in C:\Users\source\repos\ConsoleApp6\ConsoleApp6\ConverterService.cs:line 19

注意-如果我将"Z:\Files"的路径更改为"\\Machine1HostName\Share\\Files",则在本地系统帐户下运行服务会出现错误。

var sourceFiles = Directory.GetFiles(@"\\Machine1HostName\Share\\Files").Select(f => new FileInfo(f));

1 个答案:

答案 0 :(得分:1)

如果您使用帐户登录并挂载了共享,则最像您使用另一个帐户来使用该服务,它将不知道此挂载的共享。这样的挂载不是特定于计算机的,而是特定于用户的。

您不需要挂载任何东西,而是直接使用unc路径直接访问共享,例如:     \\ somemachine \ somefolder