Windows服务无法识别网络路径.变通办法是什么?

Windows service does not recognize network path. Whats the workaround?

本文关键字:是什么 网络 服务 识别 Windows 路径      更新时间:2023-10-16

我们有一个Buffalo NAS驱动器作为备份驱动器。

当我们将这个驱动器映射为B:时,我们的备份应用程序似乎理解了这一点,并作为一个应用程序运行。

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

我尝试将路径作为\192.168.x.xBackups作为备份路径,服务运行,但随后许多子模块失败,因为它将\视为转义字符。

如何使windows服务可以看到映射的驱动器?

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

""C:UsersjvenkatrajDocumentsSQLiteDebugzip.exe" -9 -q -g -u "\192.168.123.60Backupstorelocation150f22543d888b968498d2bd089e7edfz.zip" "\192.168.123.60BackupstoretempSPD405.tmpfile_contents""

反斜杠混淆了引号。它是一个WCHAR类型,我不能把它改成其他类型,否则我还得在别处重新定义它。我应该使用多少个反斜杠?

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

创建一个到NAS共享的符号链接:

mklink /D c:nas-backups \192.168.x.xBackups

并将备份应用程序指向c:nas-backupsetc

尝试在"看到"网络的用户下运行您的服务,例如"网络服务"用户,甚至作为映射网络驱动器的"人类"用户。

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

string path = @"\192.168.x.xBackups";

您必须确保的另一件事是服务可以访问该路径。如果您的服务是作为没有访问权限的用户登录的,您必须将服务的登录凭据更改为具有访问此路径的用户/域帐户。