2012-01-16 23 views
5

Sto provando a far funzionare il mio script python all'avvio ma ottengo il messaggio di errore accesso a windowserror negato, ma dovrei essere in grado di avviare i programmi all'avvio perché teamviewer (un programma di terze parti che ho scaricato) viene eseguito ogni volta che ricomincio il mio computer quindi so che dovrei essere in grado di far funzionare il mio programma all'avvio (potrei fare qualcosa di diverso, quindi, se potessi fare un po 'di luce su cosa sta facendo in modo diverso teamviewer per far funzionare lo script all'avvio che sarebbe utile).Come aggiungo uno script python al registro di avvio?

Ecco il mio script

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') 

Ogni ingresso è apprezzato.

+3

Perché non è sufficiente aggiungere nella vostra cartella di avvio? Se i file '.py' sono associati all'interprete python, dovrebbe funzionare bene – wim

+0

Vuoi dire" esegui questo quando accedo al mio computer "o" esegui in background "? py2exe può essere utilizzato per creare servizi eseguiti all'avvio del computer. Mettere il tuo script nella cartella di avvio funziona se vuoi che venga eseguito per il tuo account utente. –

risposta

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

Sbarazzarsi di tutta questa roba _winreg. Invece, si suppone di dover semplicemente fare doppio clic su un file py per aprire la console nella cartella di avvio (C:\Users\yourusername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup su Windows 7 e C:\Documents and Settings\yourusername\Start Menu\Programs\Startup in XP). Questo funziona perché Windows tenta di aprire tutti i file nella cartella di avvio e, se Python apre i PY per impostazione predefinita, Windows aprirà la console Python. Prova a riavviare, dovrebbe funzionare.

1

Babbuino: Sono un po 'in ritardo, ma sembra che tu abbia lasciato il sam alla fine del tuo codice qui.

Quando si apre una chiave è necessario aggiungere i diritti utente, se non si _winreg default di "leggere":

Ecco un frammento dal sito pitone http://docs.python.org/2/library/_winreg.html#access-rights

sam è un numero intero che specifica una maschera di accesso che descrive l'accesso di sicurezza desiderato per la chiave. L'impostazione predefinita è KEY_READ. Vedi i diritti di accesso per altri valori consentiti.

Ecco il codice corretto:

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')