我試圖製作一個在Windows環境中持久化的python腳本。我使用PyInstaller來創建一個exe文件。我設法讓這個腳本只能在Windows XP環境下運行,而不能在任何其他版本的Windows上運行。我可以將該exe文件移動到%temp%文件夾,但它不會寫入註冊表中的「Software \ Microsoft \ Windows \ CurrentVersion \ Run」。我很樂意讓你們在代碼上給我你的意見。有沒有更有效的方法來寫入註冊表?Python註冊表持久性
import sys, base64, os, socket, subprocess
from _winreg import *
def autorun(tempdir, fileName, run):
# Copy executable to %TEMP%:
os.system('copy %s %s'%(fileName, tempdir))
# Queries Windows registry for the autorun key value
# Stores the key values in runkey array
key = OpenKey(HKEY_LOCAL_MACHINE, run)
runkey =[]
try:
i = 0
while True:
subkey = EnumValue(key, i)
runkey.append(subkey[0])
i += 1
except WindowsError:
pass
# If the autorun key "helloworld" isn't set this will set the key:
if 'helloworld' not in runkey:
try:
key= OpenKey(HKEY_LOCAL_MACHINE, run,0,KEY_ALL_ACCESS)
SetValueEx(key ,'helloworld',0,REG_SZ,r"%TEMP%\hello.exe")
key.Close()
except WindowsError:
pass
def hello():
print "hello world"
def main():
tempdir = '%TEMP%'
fileName = sys.argv[0]
run = "Software\Microsoft\Windows\CurrentVersion\Run"
autorun(tempdir, fileName, run)
hello()
if __name__ == "__main__":
main()
感謝您的反饋意見。我實際上通過將HKEY_LOCAL_MACHINE更改爲HKEY_CURRENT_USER來解決問題。但我有一個新問題。由於某種原因,它不會自動啓動。 – holograms
沒關係我得到它的工作。謝謝 – holograms