PyQt: лучший способ сделать трюк "начать при загрузке" для моей программы в Windows - PullRequest
4 голосов
/ 31 мая 2011

Я использую PyQt для разработки приложения, которое в Windows, если оно установлено в настройках, должно запускаться при загрузке.

Я выпускаю это программное обеспечение с PyInstaller в виде одного исполняемого файла; у меня нет подходящего "установщика".

Какой лучший способ достичь этого? (= запуск при загрузке)

Возможное решение - добавить ссылку в папку автозагрузки, но я должен сделать это из программного обеспечения: это возможно? Другие способы?

Есть универсальный путь к папке автозагрузки? Могу ли я иметь проблему с некоторыми правами?

Ответы [ 2 ]

6 голосов
/ 31 мая 2011

попробуйте этот код (у меня работает с 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_()
3 голосов
/ 31 мая 2011

Вы можете добавить раздел реестра в [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run] с любым именем и значением «path_to_your_exec». это потребует права локального администратора, но будет работать для всех пользователей. Тот же ключ, но начинающийся с [HKEY_CURRENT_USER], не потребует прав администратора, но будет работать только для текущего пользователя. Этот путь к реестру одинаков для win2k..win7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...