如何将Python脚本添加到启动注册表?

7
我正在尝试让我的Python脚本在启动时运行,但是我收到了“WindowsError访问被拒绝”的错误消息。但我应该能够使程序在启动时开始运行,因为我下载的第三方程序TeamViewer每次重新启动计算机时都会运行,所以我知道我应该能够使我的程序在启动时运行(可能我做了一些不同的事情,如果你能解释一下TeamViewer是如何以不同的方式运行其脚本以便启动,那就更好了)。
这是我的脚本:
import _winreg, webbrowser
key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Run')
_winreg.SetValueEx(key,'pytest',0,_winreg.REG_BINARY,'C:\Users\"USERNAME"\Desktop\test.py') 
key.Close()
webbrowser.open('www.youtube.com')

非常感谢您的贡献。


3
为什么不直接将它添加到您的启动文件夹中?如果.py文件已与Python解释器相关联,则应该可以正常工作。 - wim
你是指“当我登录电脑时运行这个”还是“在后台运行”?py2exe可以用来创建服务,这些服务在计算机启动时运行。如果您希望它在用户帐户下运行,则可以将脚本放入启动文件夹中。 - g.d.d.c
2个回答

5
import webbrowser
webbrowser.open('www.youtube.com')

摆脱所有的 _winreg 内容。相反,您应该将它放在启动文件夹中(假设双击 py 文件会打开控制台)(C:\Users\yourusername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 在 Windows 7 上,C:\Documents and Settings\yourusername\Start Menu\Programs\Startup 在 XP 上)。这样可以正常工作,因为 Windows 尝试打开启动文件夹中的所有文件,如果默认情况下 Python 打开 PY 文件,Windows 将打开 Python 控制台。尝试重新启动,应该可以正常工作。

3
狒狒: 我发布有点晚了,但你似乎在这里的代码末尾遗漏了sam。
当您打开一个键时,需要添加用户权限,如果不这样做,则_winreg默认为“READ”: 以下是来自Python网站的一段代码 http://docs.python.org/2/library/_winreg.html#access-rights sam是一个整数,指定描述所需安全访问的访问掩码。默认值为KEY_READ。请参阅访问权限以获取其他允许的值。 以下是已更正的代码:
 import _winreg, webbrowser
    key = _winreg.OpenKey(_winreg.HKEY_CURRENT_USER,'Software\Microsoft\Windows\CurrentVersion\Run',_winreg.KEY_SET_VALUE)
    _winreg.SetValueEx(key,'pytest',0,_winreg.REG_BINARY,'C:\Users\"USERNAME"\Desktop\test.py') 
    key.Close()
webbrowser.open('www.youtube.com')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接