'net use'命令在子进程调用时不返回任何内容。

时间:2015-06-09 15:01:53

标签: python

我正在Windows服务器上运行守护程序作为服务,该服务器旨在侦听触发器并在服务器上创建文件夹。但是我遇到了这样一个问题:虽然命令提示符识别我的'Y:'驱动器映射,但服务却没有。

调查一下,我被告知问题可能是映射没有普遍建立。所以我尝试让服务运行net use命令并在该访问级别映射相同的驱动器。

注意:守护程序使用logger.info写入文本文件。

command = ['net', 'use','Y', '\\\\REAL.IP.ADDRESS\\FOLDER',
            '/user:USER', 'password']
response = subprocess.Popen(command,stdout=subprocess.PIPE)
result = response.communicate()
logger.info("net use result:")
logger.info(result[0])
logger.info(result[1])

command = ['net', 'use',]
response = subprocess.Popen(command,stdout=subprocess.PIPE)
result = response.communicate()
logger.info("Current drives:")
logger.info(result[0])
logger.info(result[1])

然而,在运行时我从过程中得不到任何响应,然后回复告诉我没有当前的驱动器。

INFO - net use result:
INFO - 
INFO - None
INFO - Current drives:
INFO - New connections will be remembered.  There are no entries in the list.  
INFO - None

也许我很笨,但不应该回复一些东西,特别是如果它没有执行命令?或者我实际上无法在此级别映射驱动器?

注意:守护程序的记录器模块以INFO -为前缀添加每行,因此出于此问题的目的,您可以忽略它。

1 个答案:

答案 0 :(得分:1)

默认情况下,服务在Local System帐户下运行,无法访问网络资源。如果您希望能够从服务访问您的网络,请尝试以具有网络权限的用户身份运行该服务。 (请注意,这可能是一个安全问题!)

Services面板中,转到您服务的Properties,然后点击Log On标签。选择This account并指定用户凭据。