在系統中注冊表怎么修改net數據,注冊表本質上就是一個數據庫,其中存放著硬件、軟件、用戶、操作系統以及程序相關設置信息。我們除了使用,也可以通過編程讀取并操作系統注冊表,以下以為例。
一、訪問注冊表
具體代碼如下,可訪問用戶賬戶列表:
該設置位于\\\ NT\\
# encoding:utf-8
from winreg import *
import sys
# 1.連接注冊表根鍵,以HKEY_LOCAL_MACHINE為例
regRoot = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
subDir = r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
# 2.獲取指定目錄下所有鍵的控制(可用于遍歷)
keyHandle = OpenKey(regRoot, subDir)
count = QueryInfoKey(keyHandle)[0] # 獲取該目錄下所有鍵的個數(0-下屬鍵個數;1-當前鍵值個數)
for i in range(count):
# 3.窮舉每個鍵,獲取鍵名
subKeyName = EnumKey(keyHandle, i)
subDir_2 = r'%s\%s' % (subDir, subKeyName)
# 4.根據獲取的鍵名拼接之前的路徑作為參數,獲取當前鍵下所屬鍵的控制
keyHandle_2 = OpenKey(regRoot, subDir_2)
count2 = QueryInfoKey(keyHandle_2)[1]
for j in range(count2):
# 5.窮舉每個鍵,獲取鍵名、鍵值以及數據類型
name, value, type = EnumValue(keyHandle_2, j)
if('ProfileImagePath' in name and 'Users' in value):
print(value)
CloseKey(keyHandle_2) # 讀寫操作結束后關閉鍵
CloseKey(keyHandle)
CloseKey(regRoot)
執行結果如下,我們可以通過讀取含有Users字段的數據注冊表怎么修改net數據,從而間接獲取用戶賬戶信息:
二、修改注冊表數據
以下以修改注冊表中防火墻的公網和家用網絡的開啟和關閉為例。
該設置位于\\\\\\
# encoding:utf-8
from __future__ import print_function
from winreg import *
import ctypes, sys
subDir = r'SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy'
standard = r'\StandardProfile'
public = r'\PublicProfile'
enableKey = 'EnableFirewall'
value = 1
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
def updateFireWall(keyName):
# 1.連接注冊表根鍵
regRoot = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
# 2.獲取指定目錄下鍵的控制
keyHandel = OpenKey(regRoot, subDir+keyName)
if is_admin():
# 3.設置該鍵的指定鍵值enableKey為value
SetValueEx(keyHandel, enableKey, value, REG_DWORD, value)
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
# 4.關閉鍵的控制
CloseKey(keyHandel)
CloseKey(regRoot)
if __name__ == '__main__':
updateFireWall(standard)
updateFireWall(public)