【问题标题】:Python script autorun on windows startupWindows启动时Python脚本自动运行
【发布时间】:2023-05-12 11:46:02
【问题描述】:

我正在尝试创建一个脚本,该脚本将在启动时以 chrome 显示页面。也就是说,我正在尝试在启动时运行 python 脚本。我正在使用winreg 模块来执行此操作。

这是我在启动时添加我的页面显示脚本的脚本:

import winreg  
import os    
import sys, traceback          

def AddToRegistry(): 


    pth = os.path.dirname(os.path.realpath(path_to_page_display_script)) 

    s_name="test.py"     

    address=os.path.join(pth,s_name)  

    try:
        open = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\\Microsoft\\Windows\\CurrentVersion\\Run", reserved=0, access = winreg.KEY_ALL_ACCESS) 

        winreg.SetValueEx(open,"pytest",0,winreg.REG_SZ,address) 

        winreg.CloseKey(open)

    except Exception:
        traceback.print_exc(file=sys.stdout)

if __name__=="__main__": 
    AddToRegistry()

这是我的页面显示脚本:

import webbrowser

url = 'http://docs.python.org/'

chrome_path = 'path_to_chrome/chrome.exe %s'

webbrowser.get(chrome_path).open(url)

脚本运行良好,没有任何错误,但是在重新启动我的机器时,chrome 不会自行打开,也不会显示页面。基本上,我的脚本没有运行。怎么了 ?请帮帮我。

【问题讨论】:

  • 您的第一个脚本放在哪里?在 Windows 启动时如何调用它?
  • 您是否尝试过使用计划任务?
  • @FlorianBernard 我将我的第一个脚本放在桌面上的一个文件夹中。该路径构成上述代码中的path_to_display_page_script 参数。
  • @EcSync 不,我没试过。通过一些研究,我发现使用注册表编辑器方法是一个更好的选择。
  • @FlorianBernard 这是我的用例,我不想使用启动文件夹,因此使用注册表方法

标签: python windows winreg


【解决方案1】:

问题不在于您的脚本。它与您的注册表项有关。

您需要告诉 Windows 调用 Python.exe C:\path_to_script\test.py,而不是 test.py

所以不要这样:

这个:

path_to_python_exe = "C:\\python\\python38";
address=os.path.join(pth,s_name)  
address = os.path.join(path_to_python_exe, "python.exe") + " " + address;

或者,如果 Python.exe 保证在您的 PATH 中,只需:

address = "Python.exe" + " " + os.path.join(pth,s_name)  

【讨论】:

  • 是的。它现在就像一个魅力。你是对的,我需要调用脚本。非常感谢朋友。
最近更新 更多