我正在使用 PyQt 开发一个在 Windows 中的应用程序,如果在首选项中设置,应该能够在启动时启动。
我将这个软件与 PyInstaller 作为单个可执行文件发布;我没有合适的“安装程序”。
实现这一目标的最佳方法是什么?(=从引导开始)
一个可能的解决方案是在启动文件夹中添加一个链接,但我必须从软件中完成:这可能吗?其他方法?
启动文件夹有通用路径吗?我可以有一些权利的问题吗?
我正在使用 PyQt 开发一个在 Windows 中的应用程序,如果在首选项中设置,应该能够在启动时启动。
我将这个软件与 PyInstaller 作为单个可执行文件发布;我没有合适的“安装程序”。
实现这一目标的最佳方法是什么?(=从引导开始)
一个可能的解决方案是在启动文件夹中添加一个链接,但我必须从软件中完成:这可能吗?其他方法?
启动文件夹有通用路径吗?我可以有一些权利的问题吗?
试试这个代码(它适用于我的py2exe):
import sys
from PyQt4.QtCore import QSettings
from PyQt4.QtGui import (QApplication, QWidget, QCheckBox, QPushButton,
QVBoxLayout)
RUN_PATH = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
class MainWidget(QWidget):
def __init__(self,parent=None):
super(MainWidget, self).__init__(parent)
self.settings = QSettings(RUN_PATH, QSettings.NativeFormat)
self.setupUi()
# Check if value exists in registry
self.checkbox.setChecked(self.settings.contains("MainWidget"))
def setupUi(self):
self.checkbox = QCheckBox("Boot at Startup", self)
button = QPushButton("Close", self)
button.clicked.connect(self.close)
layout = QVBoxLayout(self)
layout.addWidget(self.checkbox)
layout.addWidget(button)
def closeEvent(self, event):
if self.checkbox.isChecked():
self.settings.setValue("MainWidget",sys.argv[0]);
else:
self.settings.remove("MainWidget");
event.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWidget()
w.show()
app.exec_()
您可以在 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 下添加任何名称和值“path_to_your_exec”的注册表项。这将需要本地管理员权限,但适用于所有用户。以 [HKEY_CURRENT_USER] 开头的相同密钥不需要管理员权限,但仅适用于当前用户。该注册表路径与 win2k..win7 相同