赞
踩
一些关于python项目的实际问题和解决办法。
陆续更新中。。。
目录
问题二:使用python操作exe文件,实现 "开机自启动" 功能
检查计算机服务中,是否设置MySQL自动启动,并确保MySQL状态为正在运行。
开机时,可能因为某种原因,MySQL启动的时候较长,从而被系统强制停止。所以需要在注册表中设置《服务启动限制时长》,具体操作步骤如下:
参考文章:https://blog.csdn.net/fyyyr/article/details/117435022
通过python操控 "注册表编译器" ,直接把exe文件的路径添加到注册表指定文件夹中。
如果手动实现,具体步骤如下:
如果使用python实现,代码如下:
- import win32api
- import win32con
-
- name = r'demo' # 要添加的项值名称
- path = 'C:\demo.exe' # 获取exe文件的绝对路径
- KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run' # 注册表中自动开启程序的路径
-
- # 打开注册表,并跳转到指定的路径
- key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS)
- # 添加exe文件的结对路径到注册表中
- win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, path)
- # 关闭注册表
- win32api.RegCloseKey(key)
- print("添加成功!")
首先,创建exe文件的快捷方式,然后把快捷方式copy到文件夹中的自启动路径中。快捷方式是为了解决打包程序中的相对路径和绝对路径问题。其中,一个重要的细节:快捷方式起始位置的设置,保证 "双击快捷方式的效果" 和 "双击打包文件夹中exe文件的效果" 相同。
如果手动实现,具体步骤如下:
如果使用python实现,代码如下:
- import os
- import winshell
- import getpass
-
-
- def create_shortcut(bin_path: str, name: str, desc: str):
- """
- :param bin_path: 软件真实exe路径
- :param name: 快捷方式的路径 + 快捷方式名称
- :param desc: 描述快捷方式内容:鼠标放在图标上面会有提示
- :return:
- """
- try:
- shortcut = name + ".lnk"
- winshell.CreateShortcut(
- Path=shortcut,
- Target=bin_path,
- Icon=(bin_path, 0),
- Description=desc
- )
- return True
- except ImportError as err:
- print("Well, do nothing as 'winshell' lib may not available on current os")
- print("error detail %s" % str(err))
- return False
-
- if __name__ == '__main__':
- # ################ 一些路径参数 ################ #
- # 获取用户名
- username = getpass.getuser()
- # 系统盘符名称
- syspath = os.getenv("SystemDrive")
- # 不完全的自启动目录
- exe_path = r"AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
- # 自启动目录
- startupPath = os.path.join(syspath, r"\users", username, exe_path)
- bin_path = r"C:\demo\demo.exe" # 软件真实exe路径
- link_path = startupPath + "\\demo" # 快捷方式的路径(创建到桌面路径)+ 快捷方式名称
- desc = "Flying Bulldog" # 描述快捷方式内容:鼠标放在图标上面会有提示
- # 桌面快捷方式的起始位置,否则会因为相对路径的存在而报错
- link_filepath = os.path.join(startupPath, "demo.lnk")
- # ############################################ #
-
- # ########## 将快捷方式添加到自启动目录 ########### #
- create_shortcut(bin_path, link_path, desc)
- # 桌面快捷方式的起始位置,否则会因为相对路径的存在而报错
- with winshell.shortcut(link_filepath) as link:
- link.working_directory = "C:\demo"
- # ############################################ #
- print('添加成功!')
>>> 如有疑问,欢迎评论区一起探讨!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。