PyQt:实现“启动时启动”技巧的最佳方法对于我在 Windows 中的程序

发布于 2024-11-10 08:19:48 字数 238 浏览 4 评论 0原文

我正在使用 PyQt 开发一个应用程序,在 Windows 中,如果在首选项中进行设置,应该能够在启动时启动。

我将使用 PyInstaller 作为单个可执行文件发布该软件;我没有合适的“安装程序”。

实现这一目标的最佳方法是什么? (=启动时启动)

一个可能的解决方案是在启动文件夹中添加一个链接,但我必须从软件中执行此操作:可能吗?其他方式?

启动文件夹有通用路径吗?我可以有一些权利问题吗?

I'm using PyQt to develop an application that in Windows, if set in preferences, should be able to start at boot.

I'm releasing this software with PyInstaller as a single executable file; i don't have a proper "installer".

Which is the best way to achieve this? ( = starting at boot)

A possible solution is to add a link in the startup folder, but i have to do it from the software: it's possible? Other ways?

There is an universal path to the Startup folder? Can i have some rights' problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

挽梦忆笙歌 2024-11-17 08:19:48

尝试这个代码(它对我来说适用于 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_()

try this code (it works for me with 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_()
贱贱哒 2024-11-17 08:19:48

您可以在 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 下添加注册表项,其名称和值可以为“path_to_your_exec”。这将需要本地管理员权限,但适用于所有用户。
以 [HKEY_CURRENT_USER] 开头的相同密钥不需要管理员权限,但仅适用于当前用户。
该注册表路径与 win2k..win7 相同

You may add registry key under [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run], with any name and value "path_to_your_exec". this will require local administrator right, but will work for all users.
The same key but starting with [HKEY_CURRENT_USER] will not require administrator privileges, but will work only for current user.
That registry path is the same for win2k..win7

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文