经过最近几天的踩坑,验证出python打包出exe再注册成系统服务去执行会失败,失败的原因就是系统服务不允许exe里面有映射网络盘符的动作,无论是用os.popen还是os.system去调用批处理命令"net use \\ip psw /u:user"都会失败,但是只要不注册成系统服务去执行就没问题(单纯执行exe是没问题的)。
后来怀疑是批处理命令net use和系统服务不兼容,所以用纯python代码和库写了如下的代码并打包exe,exe执行没问题,但是如果注册成系统服务执行依然会报错,查看log发现映射模块报错。
结论:Windows系统服务不支持映射网络盘符。
import os,time
import win32wnet
username = 'administrator'
password = 'xxx'
host = '10.129.38.220'
#password = 'aN4#eF0$dF'
#host = '10.129.38.12'
unc = ''.join(['\\\\', host])
print(unc)
def wnet_connect(host, username, password):
try:
aa = win32wnet.WNetAddConnection2(0, None, unc, None, username, password)
print(aa)
fs = open("navy.log", "a");
fs.write(str(aa) + '\n');
fs.close()
except Exc