繁体   English   中英

py安装程序将脚本转换为exe后,如何使python中的脚本在启动时运行

[英]how to make script in python run at startup after converting it to exe by py installer

我想让我的脚本在通过 pyinstaller 工具将其转换为 EXE 后自动在启动时运行, *一旦单击 SPEED.EXE '程序名称',它将自身复制到计算机上的特定路径,然后在启动文件夹中创建一个 bat 文件'它包含启动 SPPED.EXE' 的代码,但我的问题是 bat 文件在启动时不运行 *

import os
import ftplib
import sys                   
import shutil                   
import getpass                
##################copy script into startup#######################
def copy_script():
    USER_NAME = getpass.getuser()
    src=sys.argv[0]
    dst = r'C:\Users\%s\AppData' % USER_NAME
    shutil.copy2(src,dst)
    dst='C:\Users\\"%s"\AppData\SPEED.exe' % USER_NAME                   ######name of script after making EXE
    add_to_startup(USER_NAME,file_path=dst)
    return None
######################################make a bat file to run on startup######
def add_to_startup(USER_NAME,file_path):
    if file_path == "":
        file_path = os.path.dirname(os.path.realpath(__file__))
    bat_path = r'C:\Users\%s\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup' % USER_NAME
    with open(bat_path + '\\' + "open.bat", "w") as bat_file:
        bat_file.write(r'@echo off'+ os.linesep)   ## to hide console batch file when it run
        bat_file.write(r'start "" %s' % file_path)

if __name__=='__main__':
    copy_script()
    start()     ##it is  function that i make it

谢谢,我可以解决我的问题。

而不是在启动文件中创建一个bat文件“我删除了add_to_startup方法”,我使用了注册表方法

    import winreg;
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
    r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0,
    winreg.KEY_SET_VALUE); winreg.SetValueEx(key, 'speed', 0,
    winreg.REG_SZ,'file_path'); # file_path is path of file after coping it

错误“致命错误无法执行脚本速度”是方法shutil.copy2(src,dst)无法在启动时将相同的源复制到相同的目标的结果所以我例外

        try:
            shutil.copy2(src,dst)
        except:
                pass   

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM