Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从VB.NET Windows服务访问网络驱动器_Windows_Service - Fatal编程技术网

无法从VB.NET Windows服务访问网络驱动器

无法从VB.NET Windows服务访问网络驱动器,windows,service,Windows,Service,我有一个用VB.NET开发的Windows服务。此Windows服务每晚8点从我的C:\ftpDocs文件夹复制文件到Y:\ftpDocs文件夹中拾取一个文件 Y:是一个映射驱动器,它是\\sourceServer\Output files。当我从VB.NET Windows应用程序而不是Windows服务运行相同的代码时,它运行得非常好。但从服务中,它抛出访问被拒绝错误访问\\sourceServer\Output Windows服务似乎是从C:\Windows\system32运行的。因此,

我有一个用VB.NET开发的Windows服务。此Windows服务每晚8点从我的C:\ftpDocs文件夹复制文件到Y:\ftpDocs文件夹中拾取一个文件

Y:是一个映射驱动器,它是\\sourceServer\Output files。当我从VB.NET Windows应用程序而不是Windows服务运行相同的代码时,它运行得非常好。但从服务中,它抛出访问被拒绝错误访问\\sourceServer\Output

Windows服务似乎是从C:\Windows\system32运行的。因此,我尝试将当前目录更改为C:\ftpService这是我的应用程序所在的文件夹

为了访问映射的驱动器,我提供了一个用户名和密码,而不是我的Windows用户名和密码。您认为这就是它无法从Windows服务访问它的原因吗


如果是,它在Windows应用程序中是如何工作的?这个问题在过去的一个月内不会消失。

当前映射的驱动器是按用户维护的-对于我来说,仅仅因为我们同时登录,就不能访问您拥有凭据的共享上的文件


您的服务将需要使用保存的某种凭据映射共享本身。如果您愿意,您可以硬编码它们,尽管这样做不太安全,而且还带来了可维护性负担。如何做到这一点的一个很好的例子是——尽管我没有使用这段代码,我只是阅读了这篇文章。

当前映射的驱动器是每个用户维护的——对于我来说,仅仅因为我们都在同一时间登录,就能够访问您拥有凭据的共享上的文件是一个很大的禁忌


您的服务将需要使用保存的某种凭据映射共享本身。如果您愿意,您可以硬编码它们,尽管这样做不太安全,而且还带来了可维护性负担。如何做到这一点的一个很好的例子是,虽然我没有使用此代码,但我只是阅读了这篇文章。

通常,Windows服务使用的id的凭据无权访问网络上的文件。尝试在可以访问网络文件的域帐户下运行windows服务。确保此帐户可以访问它将要读取和写入的网络和本地文件夹/文件


此外,您还需要使用UNC路径,而不是映射驱动器。不会为该服务装载映射的驱动器。

通常,Windows服务使用的id的凭据无权访问网络上的文件。尝试在可以访问网络文件的域帐户下运行windows服务。确保此帐户可以访问它将要读取和写入的网络和本地文件夹/文件


此外,您还需要使用UNC路径,而不是映射驱动器。映射的驱动器将不会为服务安装。

tvanfosson,我也尝试了UNC路径。但这没用。接下来,我计划将我的NetworkID添加到映射的驱动器文件夹中。我知道这是一个旧答案,但值得注意的是,您永远不应该使用用户凭据运行服务-如果用户退出,而您禁用了他们的帐户,该怎么办?当我开始做一份工作时,我看到了老德夫的电脑。他几年前就离开了。他的帐户处于活动状态,他的PC保持24/7。数以百计的关键业务流程依赖于他的机器/信用——他们甚至无法更改密码,因为密码到处都是硬编码的。不用说,我很快就离开了。就个人而言,我在每个应用程序中使用一个帐户——一个域帐户,用于使用网络或服务器特定帐户的服务。SQL是Server\SQLService,Sophos AV是Domain\SophosService。您应该确保普通用户不能作为这些帐户登录DC/Server。之后,您可以为特定应用程序授予共享/其他资源的权限。@Basic-我同意。一个单独的服务帐户是最好的选择。tvanfosson,我也尝试了UNC路径。但这没用。接下来,我计划将我的NetworkID添加到映射的驱动器文件夹中。我知道这是一个旧答案,但值得注意的是,您永远不应该使用用户凭据运行服务-如果用户退出,而您禁用了他们的帐户,该怎么办?当我开始做一份工作时,我看到了老德夫的电脑。他几年前就离开了。他的帐户处于活动状态,他的PC保持24/7。数以百计的关键业务流程依赖于他的机器/信用——他们甚至无法更改密码,因为密码到处都是硬编码的。不用说,我很快就离开了。就个人而言,我在每个应用程序中使用一个帐户——一个域帐户,用于使用网络或服务器特定帐户的服务。SQL是Server\SQLService,Sophos AV是Domain\SophosService。您应该确保普通用户不能作为这些帐户登录DC/Server。之后,您可以授予共享/其他的权限
r特定应用程序的资源。@Basic-我同意。一个单独的服务帐户是最好的选择。谢谢Dathan,我一定会试试这个。再次感谢。谢谢大山,我一定会试试这个。再次感谢。