Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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
Windows 服务不';t行为与命令行相同_Windows_Windows Services - Fatal编程技术网

Windows 服务不';t行为与命令行相同

Windows 服务不';t行为与命令行相同,windows,windows-services,Windows,Windows Services,我正在Windows Server 2003上运行。这是我的问题: 我编写了一个Perl脚本来自动将一些文件从服务器复制到一些网络驱动器。我正在使用xcopy复制文件。我的问题是权限。 如果我从命令行运行脚本,它会工作,所有副本都会成功。 如果我尝试使用服务运行脚本,所有副本都会失败。这个服务是我编写的一个程序,它接受脚本并运行它。在后台,它所做的就是调用C函数“system”,它运行的程序与我可以从命令行运行的程序相同 我已经尝试了许多不同的方法来找出它的问题所在,但我不明白为什么该服务的运行

我正在Windows Server 2003上运行。这是我的问题: 我编写了一个Perl脚本来自动将一些文件从服务器复制到一些网络驱动器。我正在使用xcopy复制文件。我的问题是权限。
如果我从命令行运行脚本,它会工作,所有副本都会成功。 如果我尝试使用服务运行脚本,所有副本都会失败。这个服务是我编写的一个程序,它接受脚本并运行它。在后台,它所做的就是调用C函数“system”,它运行的程序与我可以从命令行运行的程序相同

我已经尝试了许多不同的方法来找出它的问题所在,但我不明白为什么该服务的运行方式与我从命令行运行它的方式不同。
我通过命令行将服务设置为以我正在使用的同一用户的身份运行

我还尝试将网络驱动器映射为具有写入权限的用户,但结果是相同的。手动脚本工作,从服务,它没有

如有任何建议,我们将不胜感激。 谢谢
Tony

服务可能正在系统中运行,无法访问网络驱动器。在服务设置中,将服务更改为在您的帐户(或具有相关权限/映射的帐户)下运行。

当服务运行时,它将使用您在Windows服务管理器中指定的任何凭据。默认的本地服务可能没有访问要复制的资源的权限


创建一个具有执行复制所需的最低权限集的新用户帐户,并将您的服务配置为在该帐户下运行。

我确实发现了这个问题(我想),这与我后来在另一篇文章中发现的相匹配:

我所做的是使用服务映射驱动器,这似乎是可行的。事实证明,如果我映射驱动器并保存凭据,那么我以后就可以访问驱动器,而无需再次映射。我不知道为什么这种方法似乎有效

-谢谢大家的帮助


Tony

cb160在权限方面击败了我,但我还是发布了,因为我回答的第二部分,即使用所需的最低权限集运行,很重要。我确实以有权限的用户身份运行该服务,但