当前位置:   article > 正文

Python项目Bug解决 && 陆续更新_python -noconsole 开机自启动当前路径错误

python -noconsole 开机自启动当前路径错误

一些关于python项目的实际问题和解决办法。

陆续更新中。。。

目录

问题一:MySQL开机自启动失败

Solution 1.

Solution 2.

问题二:使用python操作exe文件,实现 "开机自启动" 功能

Solution 1.

Solution 2.

问题三:待更新。。


问题一:MySQL开机自启动失败

Solution 1.

检查计算机服务中,是否设置MySQL自动启动,并确保MySQL状态为正在运行。

Solution 2.

开机时,可能因为某种原因,MySQL启动的时候较长,从而被系统强制停止。所以需要在注册表中设置《服务启动限制时长》,具体操作步骤如下:

  1. Win + R,并输入regedit,打开 "注册表编译器"
  2. 根据路径 "计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control" 找到Control文件夹
  3. 鼠标右键点击Control,新建 "DWORD(32 位)值(D)"
  4. 名称:ServicesPipeTimeout
  5. 数据:十进制-180000,即180000ms=180s

 参考文章:https://blog.csdn.net/fyyyr/article/details/117435022

问题二:使用python操作exe文件,实现 "开机自启动" 功能

Solution 1.

通过python操控 "注册表编译器" ,直接把exe文件的路径添加到注册表指定文件夹中。

如果手动实现,具体步骤如下:

  1. Win + R,并输入regedit,打开 "注册表编译器"
  2. 根据路径 "计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVer sion\Run" 找到Run文件夹
  3. 鼠标右键点击Run,新建 "字符串值(S)"
  4. 名称:目标exe文件名称,不需要.exe后缀
  5. 数据:目标exe文件的绝对路径

如果使用python实现,代码如下:

  1. import win32api
  2. import win32con
  3. name = r'demo' # 要添加的项值名称
  4. path = 'C:\demo.exe' # 获取exe文件的绝对路径
  5. KeyName = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run' # 注册表中自动开启程序的路径
  6. # 打开注册表,并跳转到指定的路径
  7. key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, KeyName, 0, win32con.KEY_ALL_ACCESS)
  8. # 添加exe文件的结对路径到注册表中
  9. win32api.RegSetValueEx(key, name, 0, win32con.REG_SZ, path)
  10. # 关闭注册表
  11. win32api.RegCloseKey(key)
  12. print("添加成功!")

Solution 2.

首先,创建exe文件的快捷方式,然后把快捷方式copy到文件夹中的自启动路径中。快捷方式是为了解决打包程序中的相对路径和绝对路径问题。其中一个重要的细节:快捷方式起始位置的设置,保证 "双击快捷方式的效果" 和 "双击打包文件夹中exe文件的效果" 相同。

 如果手动实现,具体步骤如下:

  1. 打开文件管理器,点击 "查看" ,选中 "隐藏的项目" 前面的ChenkBox
  2. 根据路径 "C:\系统用户路径\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ Startup" 转到自启动文件夹Startup中
  3. 把exe快捷方式复制到Startup文件夹中

如果使用python实现,代码如下:

  1. import os
  2. import winshell
  3. import getpass
  4. def create_shortcut(bin_path: str, name: str, desc: str):
  5. """
  6. :param bin_path: 软件真实exe路径
  7. :param name: 快捷方式的路径 + 快捷方式名称
  8. :param desc: 描述快捷方式内容:鼠标放在图标上面会有提示
  9. :return:
  10. """
  11. try:
  12. shortcut = name + ".lnk"
  13. winshell.CreateShortcut(
  14. Path=shortcut,
  15. Target=bin_path,
  16. Icon=(bin_path, 0),
  17. Description=desc
  18. )
  19. return True
  20. except ImportError as err:
  21. print("Well, do nothing as 'winshell' lib may not available on current os")
  22. print("error detail %s" % str(err))
  23. return False
  24. if __name__ == '__main__':
  25. # ################ 一些路径参数 ################ #
  26. # 获取用户名
  27. username = getpass.getuser()
  28. # 系统盘符名称
  29. syspath = os.getenv("SystemDrive")
  30. # 不完全的自启动目录
  31. exe_path = r"AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
  32. # 自启动目录
  33. startupPath = os.path.join(syspath, r"\users", username, exe_path)
  34. bin_path = r"C:\demo\demo.exe" # 软件真实exe路径
  35. link_path = startupPath + "\\demo" # 快捷方式的路径(创建到桌面路径)+ 快捷方式名称
  36. desc = "Flying Bulldog" # 描述快捷方式内容:鼠标放在图标上面会有提示
  37. # 桌面快捷方式的起始位置,否则会因为相对路径的存在而报错
  38. link_filepath = os.path.join(startupPath, "demo.lnk")
  39. # ############################################ #
  40. # ########## 将快捷方式添加到自启动目录 ########### #
  41. create_shortcut(bin_path, link_path, desc)
  42. # 桌面快捷方式的起始位置,否则会因为相对路径的存在而报错
  43. with winshell.shortcut(link_filepath) as link:
  44. link.working_directory = "C:\demo"
  45. # ############################################ #
  46. print('添加成功!')

问题三:待更新。。。

>>> 如有疑问,欢迎评论区一起探讨!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/72385
推荐阅读
相关标签
  

闽ICP备14008679号