来自任务调度程序的 python 文件作为系统

问题描述 投票:0回答:1

我创建了一个 python 脚本来监控 MS Edge 的当前版本。运行时,该脚本会创建一个名为 previous_version.txt 的 .txt 文件,并将版本号写入该文本文件中。当我手动运行该文件时,这效果很好。

现在我尝试将此脚本添加到任务计划程序中,并将其添加为系统任务,以便在我未登录时运行(它应该在服务器 PC 上远程运行)。 然而,这不起作用。 它声称任务计划程序已成功完成任务,但以返回代码 2147942401 结束,并且从未创建 .txt 文件。

请参阅下面的附图。

我的Python脚本:

import os
import win32api

def local_has_changed():
    filepath = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
    info = win32api.GetFileVersionInfo(filepath, "\\")
    ms = info["FileVersionMS"]
    new_majorversion = str(win32api.HIWORD(ms))

    path = os.path.dirname(__file__)
    file = str(path)+"\\previous_version.txt"

    if not os.path.exists(file):
        open(file, 'w+').close()
        
    filehandle = open(file, 'r')
    old_majorversion = str(filehandle.read())
    filehandle.close()
    
    if new_majorversion != old_majorversion:
        print('Version changed from '+old_majorversion+' to '+new_majorversion)

    filehandle = open(file, 'w')
    filehandle.write(str(new_majorversion))
    filehandle.close()

local_has_changed()

该文件在远程服务器和我的本地电脑上手动运行良好,但任务计划程序在两者上都失败。我运行的是 Windows 11

python scheduled-tasks pywin32
1个回答
0
投票

您看到的返回值等于系统错误代码 80070001。其描述是:

Severity: 2 - Warning
Facility: 7 - FACILITY_WIN32
Error: 0001 - Incorrect function.

但是并不清楚它指的是哪个函数。在 SYSTEM 帐户下运行此代码可能会阻止访问某些功能或文件。您将需要添加一些调试代码来尝试诊断它。另请检查脚本的位置及其引用的任何文件是否位于系统可以访问的目录内。

© www.soinside.com 2019 - 2024. All rights reserved.