最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用python讀取windows注冊表的方法詳解

 更新時間:2025年09月23日 08:46:38   作者:NotOnlyAnAnswer  
在windows系統(tǒng)中,注冊表?是系統(tǒng)定義的數(shù)據(jù)庫,應(yīng)用程序和系統(tǒng)組件在其中存儲和檢索配置數(shù)據(jù),本文將為大家整理Python讀取windows注冊表的相關(guān)方法,希望對大家有所幫助

在windows系統(tǒng)中,注冊表 是系統(tǒng)定義的數(shù)據(jù)庫,應(yīng)用程序和系統(tǒng)組件在其中存儲和檢索配置數(shù)據(jù)。

注冊表是一個分層數(shù)據(jù)庫,其中包含對 Windows本身以及Windows上運行的應(yīng)用程序和服務(wù)至關(guān)重要的數(shù)據(jù)。 因此我們還是不好進行隨意操作,但是查看注冊表的信息可以讓我們更加了解系統(tǒng)的運行情況。

數(shù)據(jù)以樹格式進行結(jié)構(gòu)化。樹中的每個節(jié)點稱為鍵。每個鍵可以同時包含子項和數(shù)據(jù)條目,稱為值。

通過查看注冊表的數(shù)據(jù)我們可以發(fā)現(xiàn)一些比較有趣的系統(tǒng)信息。比如我們可以通過注冊表看到用戶定義的環(huán)境變量

也可以查看菜單在文件夾空白處右鍵的菜單操作。

以下是使用python3對注冊表進行讀取的代碼。

import winreg



def enumerate_registry_values(key, sub_key):
    """
    枚舉注冊表鍵中的所有值
    :param key_path: 注冊表鍵路徑
    """
    # key  可以是一個打開的key,或者winreg預(yù)定義的值HKEY_* constants
    try:
        reg_key = winreg.OpenKey(key, sub_key, 0, winreg.KEY_READ)
    except OSError:
        print(f"can't open key {key}/{sub_key}")
        return
    values = []
    index = 0
    while True:
        try:
            # 枚舉值
            value_name, value_data, value_type = winreg.EnumValue(reg_key, index)
            values.append((value_name, value_data, value_type))
            index += 1
        except OSError:
            # 當(dāng)沒有更多值時跳出循環(huán)
            break
    winreg.CloseKey(key)
    print(f"枚舉值成功 - 路徑: {key}{sub_key}, 值數(shù)量: {len(values)}")
    for name, data, type_ in values:
        print(f"  名稱: {name}, 值: {data}, 類型: {type_}")


print("基于注冊表查看用戶環(huán)境變量")
# 查看用戶定義的環(huán)境變量路徑是:HKEY_CURRENT_USER\Environment
enumerate_registry_values(winreg.HKEY_CURRENT_USER,"Environment")

def get_children_key_names(key, sub_key):
    """
    獲取key的子節(jié)點的key
    并且以數(shù)組返回
    """
    # key  可以是一個打開的key,或者winreg預(yù)定義的值HKEY_* constants
    reg_key = winreg.OpenKey(key, sub_key, 0, winreg.KEY_READ)
    sub_key_names = []
    index = 0
    while True:
        try:
            # 枚舉值
            sub_key_name = winreg.EnumKey(reg_key, index)
            sub_key_names.append(sub_key_name)
            index += 1
        except OSError:
            # 當(dāng)沒有更多值時跳出循環(huán)
            break
    winreg.CloseKey(key)
    return sub_key_names

print("基于注冊表查看對文件夾右鍵菜單的操作")
# 遍歷路徑:\HKEY_CLASSES_ROOT\Directory\Background\shell,查看針對文件夾中空白處右鍵菜單的操作
sub_key_names=get_children_key_names(winreg.HKEY_CLASSES_ROOT,r"Directory\Background\shell")
for sub_key_name in sub_key_names:
    # 菜單的操作在command的值中
    enumerate_registry_values(winreg.HKEY_CLASSES_ROOT,r'Directory\Background\shell\\'+""+sub_key_name+r"\command")

輸出如下:

方法補充

python操作注冊表的方法及應(yīng)用

1.打開注冊表

可以使用winreg模塊的OpenKey()方法打開注冊表。該方法的參數(shù)是一個表示注冊表項的句柄和一個表示要打開的子項的名稱的字符串。如果要打開的子項不存在,將會拋出一個WindowsError異常。

下面是打開注冊表的示例代碼:

import winreg

# 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer')

在上面的代碼中,我們首先使用winreg.HKEY_CURRENT_USER常量表示HKEY_CURRENT_USER根鍵。然后使用winreg.OpenKey()方法打開注冊表項Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。

2.讀取注冊表值

可以使用winreg模塊的QueryValue()方法讀取注冊表值。該方法的參數(shù)是一個表示注冊表項的句柄和一個表示要讀取的值的名稱的字符串。如果要讀取的值不存在,將會拋出一個WindowsError異常。

下面是讀取注冊表值的示例代碼:

import winreg
# 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer')
# 讀取StartPage鍵的值
value = winreg.QueryValue(key, 'StartPage')
print(value)

在上面的代碼中,我們首先使用winreg.OpenKey()方法打開注冊表項Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。然后使用winreg.QueryValue()方法讀取StartPage鍵的值,并將結(jié)果保存在變量value中。最后打印value的值。

3.寫入注冊表值

可以使用winreg模塊的SetValue()方法寫入注冊表值。該方法的參數(shù)是一個表示注冊表項的句柄、一個表示要寫入的值的名稱的字符串和一個表示要寫入的值的類型的常量。如果要寫入的值已存在,將會覆蓋原有的值。

下面是寫入注冊表值的示例代碼:

import winreg
# 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer', 0, winreg.KEY_WRITE)
# 寫入TestValue鍵的值
winreg.SetValue(key, 'TestValue', winreg.REG_SZ, 'Hello, World!')

在上面的代碼中,我們首先使用winreg.OpenKey()方法打開注冊表項Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。然后使用winreg.SetValue()方法寫入TestValue鍵的值。需要注意的是,我們需要將要寫入的值的類型作為winreg.SetValue()方法的第三個參數(shù)傳入,并使用常量表示類型。

4. 關(guān)閉注冊表

在操作注冊表之后,我們需要關(guān)閉注冊表??梢允褂脀inreg模塊的CloseKey()方法關(guān)閉注冊表。該方法的參數(shù)是一個表示注冊表項的句柄。

下面是關(guān)閉注冊表的示例代碼:

import winreg
# 打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer鍵
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer')
# 關(guān)閉注冊表
winreg.CloseKey(key)

在上面的代碼中,我們首先使用winreg.OpenKey()方法打開注冊表項Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。然后使用winreg.CloseKey()方法關(guān)閉注冊表。

5.python 讀取注冊表項值

import winreg  # 導(dǎo)入winreg庫

reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer"  # 注冊表路徑
reg_key_name = "Shell Folders"  # 要讀取的具體項名

try:
    reg_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, reg_path)  # 打開注冊表項
    value, regtype = winreg.QueryValueEx(reg_key, reg_key_name)  # 讀取注冊表項的值
except WindowsError as e:  # 捕捉 Windows 錯誤
    print(f"發(fā)生錯誤: {e}")  # 輸出錯誤信息
else:
    print(f"讀取到的值: {value}")  # 輸出注冊表項的值
finally:
    winreg.CloseKey(reg_key)  # 關(guān)閉注冊表項

到此這篇關(guān)于利用python讀取windows注冊表的方法詳解的文章就介紹到這了,更多相關(guān)python讀取windows注冊表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python?gravis庫實現(xiàn)圖形數(shù)據(jù)可視化實例探索

    python?gravis庫實現(xiàn)圖形數(shù)據(jù)可視化實例探索

    這篇文章主要為大家介紹了python?gravis庫實現(xiàn)圖形數(shù)據(jù)可視化實例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-02-02
  • Python爬蟲requests模塊之URL地址中的參數(shù)解讀

    Python爬蟲requests模塊之URL地址中的參數(shù)解讀

    這篇文章主要介紹了Python爬蟲requests模塊之URL地址中的參數(shù)解讀,在你拿到數(shù)據(jù)所在的url地址之后,發(fā)送網(wǎng)絡(luò)請求時,請求的url中包含兩種地址參數(shù):查詢參數(shù)和請求參數(shù),需要的朋友可以參考下
    2023-08-08
  • Pytorch框架之one_hot編碼函數(shù)解讀

    Pytorch框架之one_hot編碼函數(shù)解讀

    這篇文章主要介紹了Pytorch框架之one_hot編碼函數(shù)解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python多進程寫入同一文件的方法

    Python多進程寫入同一文件的方法

    今天小編就為大家分享一篇Python多進程寫入同一文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 解決使用Spyder IDE時matplotlib繪圖的顯示問題

    解決使用Spyder IDE時matplotlib繪圖的顯示問題

    這篇文章主要介紹了解決使用Spyder IDE時matplotlib繪圖的顯示問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python3爬蟲帶上cookie的實例代碼

    Python3爬蟲帶上cookie的實例代碼

    在本篇文章里小編給各位分享的是一篇關(guān)于Python3爬蟲帶上cookie的實例代碼內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • Python探索之自定義實現(xiàn)線程池

    Python探索之自定義實現(xiàn)線程池

    這篇文章主要介紹了Python探索之自定義實現(xiàn)線程池,使用queue實現(xiàn)線程池的方法,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • Python無限循環(huán)的產(chǎn)生原因與避免方法

    Python無限循環(huán)的產(chǎn)生原因與避免方法

    本文詳細(xì)剖析了無限循環(huán)的產(chǎn)生原因、表現(xiàn)特征及五大產(chǎn)生原因,并提供了四大避免策略:防御性循環(huán)設(shè)計、調(diào)試與監(jiān)控、代碼審查與靜態(tài)分析、重構(gòu)為for循環(huán),通過真實代碼示例和可視化圖表,幫助開發(fā)者掌握防止和解決無限循環(huán)的方法,提升代碼健壯性,需要的朋友可以參考下
    2026-04-04
  • 一文淺析如何創(chuàng)建內(nèi)網(wǎng)PyPI鏡像站點

    一文淺析如何創(chuàng)建內(nèi)網(wǎng)PyPI鏡像站點

    這篇文章主要為大家詳細(xì)介紹了如何創(chuàng)建內(nèi)網(wǎng)PyPI鏡像站點,這是一個常見的企業(yè)級需求,用于內(nèi)網(wǎng)環(huán)境中的Python包管理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-09-09
  • 談?wù)刾ython垃圾回收機制

    談?wù)刾ython垃圾回收機制

    這篇文章主要介紹了python垃圾回收機制的相關(guān)資料,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09

最新評論

洞头县| 池州市| 邛崃市| 清镇市| 高密市| 儋州市| 互助| 许昌市| 珲春市| 咸宁市| 丹凤县| 赫章县| 静乐县| 海门市| 阿克| 浦北县| 咸宁市| 芜湖市| 西乌珠穆沁旗| 那曲县| 驻马店市| 罗源县| 乐平市| 花莲市| 桦川县| 边坝县| 威海市| 津南区| 白朗县| 禄丰县| 新蔡县| 潍坊市| 万山特区| 西贡区| 林周县| 老河口市| 四会市| 澄迈县| 武乡县| 永川市| 平陆县|