Khi tôi thử đọc giá trị từ khóa này, giá trị thích hợp của khóa này không được trả về, mà thay vào đó tôi nhận được giá trị của đường dẫn khóa khác?Đường dẫn khóa chính _winreg không chính xác
import _winreg as wreg
key = wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run")
print(wreg.EnumValue(key, 0))
Và kết quả:
('SunJavaUpdateSched', u'"C:\\Program Files (x86)\\Common Files\\Java\\Java Update\\jusched.exe"', 1)
Nhưng giá trị này không phải là một phần của chính tôi sử dụng? Giá trị này không nằm ở khóa này tôi nên có một giá trị khác nhau. Tôi tìm kiếm về nơi giá trị nằm trong những giá trị không chính xác trên RegEdit và nằm tại
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
Khi tôi sử dụng command prompt
REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Và tôi nhận được đầu ra thích hợp ...
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
IgfxTray REG_SZ "C:\Windows\system32\igfxtray.exe"
HotKeysCmds REG_SZ "C:\Windows\system32\hkcmd.exe"
Persistence REG_SZ "C:\Windows\system32\igfxpers.exe"
Sau đó, tôi sẽ thử sử dụng os.popen trên python ...
import os
buff = os.popen("REG QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run")
print(buff.read())
Và đầu ra
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
SunJavaUpdateSched REG_SZ "C:\Program Files (x86)\Common Files\Java\Java Update\jusched.exe"
Tại sao có những khác nhau? Làm cách nào tôi có thể nhận được giá trị chính xác bằng cách sử dụng _winreg
?
Có thể có liên quan đến [Dạng xem đăng ký thay thế] (https://msdn.microsoft.com/en-us/library/aa384129%28v=VS.85%29.aspx) vì bạn chạy Python 32 bit trên phiên bản 64 bit của hệ điều hành. Điều này được đề cập trong '_winreg' [documentation] (https://docs.python.org/2/library/_winreg.html#bit-specific). – martineau
Bạn đã đặt giá trị như thế nào? – vks
@vks Các giá trị khóa này được cài đặt tự động, tôi chỉ muốn truy xuất chúng. – user3818650