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

利用python讀取windows注冊(cè)表的方法詳解

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

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

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

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

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

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

以下是使用python3對(duì)注冊(cè)表進(jìn)行讀取的代碼。

import winreg



def enumerate_registry_values(key, sub_key):
    """
    枚舉注冊(cè)表鍵中的所有值
    :param key_path: 注冊(cè)表鍵路徑
    """
    # key  可以是一個(gè)打開的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)沒有更多值時(shí)跳出循環(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("基于注冊(cè)表查看用戶環(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é)點(diǎn)的key
    并且以數(shù)組返回
    """
    # key  可以是一個(gè)打開的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)沒有更多值時(shí)跳出循環(huán)
            break
    winreg.CloseKey(key)
    return sub_key_names

print("基于注冊(cè)表查看對(duì)文件夾右鍵菜單的操作")
# 遍歷路徑:\HKEY_CLASSES_ROOT\Directory\Background\shell,查看針對(duì)文件夾中空白處右鍵菜單的操作
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")

輸出如下:

方法補(bǔ)充

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

1.打開注冊(cè)表

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

下面是打開注冊(cè)表的示例代碼:

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()方法打開注冊(cè)表項(xiàng)Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。

2.讀取注冊(cè)表值

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

下面是讀取注冊(cè)表值的示例代碼:

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()方法打開注冊(cè)表項(xiàng)Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。然后使用winreg.QueryValue()方法讀取StartPage鍵的值,并將結(jié)果保存在變量value中。最后打印value的值。

3.寫入注冊(cè)表值

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

下面是寫入注冊(cè)表值的示例代碼:

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()方法打開注冊(cè)表項(xiàng)Software\Microsoft\Windows\CurrentVersion\Explorer,并將結(jié)果保存在變量key中。然后使用winreg.SetValue()方法寫入TestValue鍵的值。需要注意的是,我們需要將要寫入的值的類型作為winreg.SetValue()方法的第三個(gè)參數(shù)傳入,并使用常量表示類型。

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

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

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

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)閉注冊(cè)表
winreg.CloseKey(key)

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

5.python 讀取注冊(cè)表項(xiàng)值

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

reg_path = r"SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer"  # 注冊(cè)表路徑
reg_key_name = "Shell Folders"  # 要讀取的具體項(xiàng)名

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

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

相關(guān)文章

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

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

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

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

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

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

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

    Python多進(jìn)程寫入同一文件的方法

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

    解決使用Spyder IDE時(shí)matplotlib繪圖的顯示問題

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

    Python3爬蟲帶上cookie的實(shí)例代碼

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

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

    這篇文章主要介紹了Python探索之自定義實(shí)現(xiàn)線程池,使用queue實(shí)現(xiàn)線程池的方法,具有一定參考價(jià)值,需要的朋友可以了解下。
    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è)計(jì)、調(diào)試與監(jiān)控、代碼審查與靜態(tài)分析、重構(gòu)為for循環(huán),通過真實(shí)代碼示例和可視化圖表,幫助開發(fā)者掌握防止和解決無限循環(huán)的方法,提升代碼健壯性,需要的朋友可以參考下
    2026-04-04
  • 一文淺析如何創(chuàng)建內(nèi)網(wǎng)PyPI鏡像站點(diǎn)

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

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

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

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

最新評(píng)論

齐齐哈尔市| 环江| 彭水| 长春市| 轮台县| 白朗县| 象州县| 霍邱县| 浙江省| 贡觉县| 讷河市| 岳阳市| 泸水县| 江山市| 绿春县| 门源| 平湖市| 嵊泗县| 如东县| 太湖县| 临沂市| 贡山| 涟水县| 靖宇县| 太仆寺旗| 乌拉特前旗| 大埔县| 宁津县| 启东市| 泸西县| 正镶白旗| 元谋县| 肇源县| 北京市| 平阳县| 隆化县| 松溪县| 无极县| 商水县| 南溪县| 奇台县|