Windows服务不能识别networkingpath。 什么是解决方法?

我们有一个布法罗NAS驱动器作为备份驱动器。

而当我们将这个驱动器映射为B:\ ,我们的备份应用程序似乎明白这一点,并作为应用程序运行。

但是,作为服务运行时,它不能识别映射和崩溃。

我尝试将path设置为\\\192.168.xx\Backups\作为备份path,服务运行,但是很多子模块失败,因为它将\\\视为转义字符。

什么是解决方法,以便Windows服务可以看到映射的驱动器。

我试图通过CreateProcess()运行zip.exe;

""C:\Users\jvenkatraj\Documents\SQLite\Debug\zip.exe" -9 -q -g -u "\\\192.168.123.60\Backup\store\location1\50\f2\25\43\d8\88\b9\68\49\8d\2b\d0\08\9e\7e\df\z.zip" "\\\192.168.123.60\Backup\store\temp\SPD405.tmp\file_contents""

反斜杠与报价混乱。 这是一个WCHARtypes,我不能改变它的其他types,否则我将不得不在其他地方重新定义。 我应该使用多less个反斜杠?

您可以使用WNetAddConnection2 API函数在服务内部映射网络驱动器。

在NAS共享中创建一个符号链接:

 mklink /D c:\nas-backups \\192.168.xx\Backups 

并将您的备份应用程序指向c:\nas-backups\etc

尝试在“看到”网络的用户下运行服务,例如“网络服务”用户,甚至是映射网络驱动器的“人”用户。

最简单的方法就是访问网络路径

 string path = @"\\192.168.xx\Backups\"; 

另一件你必须确定的是该服务可以访问这个路径。 如果您的服务以无权访问的用户身份登录,则必须将该服务的登录凭据更改为有权访问此路径的用户/域帐户。