我有一个名为"远程加密狗阅读器"的python项目。有大约200台机器有一个" Dongle"附加的,以及一个名为" Dongle Manager"的相应的.exe。运行Dongle Manager会发出一个"扫描" .txt文件,包含来自加密狗的信息。
我正在尝试编写一个脚本,该脚本从一个中心位置运行,该脚本具有对整个网络的管理域访问权限。它将读取主机名列表,浏览每个主机名,并带回所有文件。一旦它带回所有文件,它将编译为csv。
我在实验室/测试服务器上工作,但在生产系统中,它无法工作。我想知道这是否是某种登录问题,因为人们可能正在积极使用该系统。该过程需要以静默方式启动,并在后台执行所有操作。但是,由于我连接到管理员用户,我想知道是否存在冲突。
我不确定除了tge应用程序之外还有什么工作,直到我希望该文件存在。 " Dongle经理"进程启动,但它似乎没有将扫描程序吐出任何未以管理员身份登录的计算机(我正在运行的帐户)。
以下是代码的WMI部分的片段。这是一个非常快速的脚本,因此我对任何非pythonic语句进行了解释。
c = wmi.WMI(ip, user=username, password=password)
process_startup = c.Win32_ProcessStartup.new()
process_startup.ShowWindow = SW_SHOWNORMAL
cmd = r'C:\Program Files\Avid\Utilities\DongleManager\DongleManager.exe'
process_id, result = c.Win32_Process.Create(CommandLine=cmd,
ProcessStartupInformation=process_startup)
if result == 0:
print("Process started successfully: %d" % process_id)
else:
print("Problem creating process: %d" % result)
while not os.path.exists(("A:/"+scan_folder)):
time.sleep(1)
counter += 1
if counter > 20:
failed.append(hostname)
print("A:/"+scan_folder+"does not exist")
return
time.sleep(4)
scan_list = os.listdir("A:/"+scan_folder)
scan_list.sort(key=lambda x: os.stat(os.path.join("A:/"+scan_folder, x)).st_mtime, reverse=True)
if scan_list is []:
failed.append(hostname)
return
recursive_overwrite("A:/"+scan_folder+"/"+scan_list[0],
"C:\\AvidTemp\\Dongles\\"+hostname+".txt")
假设我得到一个连接(计算机打开),它通常会在等待创建文件夹的位置失败,或者在scan_folder列表中需要某些内容...无论哪种方式,某些东西都会停止扫描正在创建,即使该过程正在开始
编辑,我在代码
中安装为A:/其他地方答案 0 :(得分:1)
问题是您已经请求显示应用程序窗口但是没有登录桌面来显示它。 WMI
示例经常使用SW_SHOWWINDOW
,但这通常是错误的选择,因为WMI
通常会尝试在后台运行某些内容。在这种情况下,SW_HIDE
(或没有)是更好的选择。