C# 安装后运行windows服务时找不到部分路径错误

C# 安装后运行windows服务时找不到部分路径错误,c#,service,window,C#,Service,Window,我有一台机器1,其中有一个共享文件夹 `\\Machine1HostName\Share` 在这里面我们有一个文件夹文件 var sourceFiles = Directory.GetFiles(@"Z:\Files").Select(f => new FileInfo(f)); 现在我在machine2中的文件夹上方安装了下面的路径 Z:\文件 我在machine2中运行了一个窗口服务,试图从路径Z:\files获取文件 var sourceFiles = Directory.Get

我有一台
机器1
,其中有一个共享文件夹

`\\Machine1HostName\Share`
在这里面我们有一个文件夹
文件

var sourceFiles = Directory.GetFiles(@"Z:\Files").Select(f => new FileInfo(f));
现在我在
machine2
中的文件夹上方安装了下面的路径

Z:\文件

我在
machine2
中运行了一个
窗口服务
,试图从路径
Z:\files
获取文件

var sourceFiles = Directory.GetFiles(@"Z:\Files").Select(f => new FileInfo(f));
当我以控制台应用程序的调试模式运行
窗口服务
时,没有错误,但当安装此应用程序并尝试使用
本地系统
帐户运行时,我发现错误如下:

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
注意-如果我使用
“\\Machine1HostName\Share\\Files”
“Z:\Files”
更改路径,则在本地系统帐户下运行服务时不会出现错误

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

如果您使用您的帐户登录并挂载共享,则大多数人都喜欢您使用另一个帐户进行服务,并且它不会知道此挂载的共享。这样装载共享不是特定于机器的,而是特定于用户的

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

我使用我的管理员帐户进行装载,并在本地系统帐户下运行服务。你的意思是两者都不同,因此彼此不认识?是的,他们不知道帐户之间的装载量。有些极端的黑客、登录脚本或组策略在某些情况下可能会起作用,但是直接使用unc路径会简单得多,最有可能的情况是不需要更改任何代码。好的,我使用account
A
进行了装载,并且使用相同的account
A
我也在运行我的窗口服务。即使这样也不起作用,有什么原因吗?因为您在当前用户会话中装载,服务也在帐户A下运行,但需要以交互方式登录,从而创建一个新会话。关于这一点,这里有一些讨论:但是从长远来看,如果你只是切换到unc共享,而不是试图让一个驱动器号在你的服务中工作,这将为你节省很多麻烦。多谢托马斯