国产无码免费,人妻口爆,国产V在线,99中文精品7,国产成人无码AA精品一,制度丝袜诱惑av,久久99免费麻辣视频,蜜臀久久99精品久久久久久酒店
        訂閱
        糾錯(cuò)
        加入自媒體

        winreg運(yùn)用:Python自帶操作注冊表的模塊!

        前言

        大家好,我是IT共享者,人稱皮皮。

        注冊表這個(gè)東西大家可能都不是很熟悉,因?yàn)槲覀兤綍r(shí)用到的少;但是它是Windows的核心,很多軟件的啟動和日志記錄什么的都包含在里面,可以說它是一個(gè)大型的數(shù)據(jù)庫也不為過,今天我們就來看看Python是如何操作注冊表的吧。

        一、注冊表初次見面

        進(jìn)入系統(tǒng)注冊表的方法多種多樣,最常見的就是運(yùn)行窗口輸入命令“regedit”,即可進(jìn)入注冊表:

        注冊表中的幾個(gè)菜單分別對應(yīng)機(jī)器的根目錄登陸的用戶信息和本地機(jī)器信息以及用戶信息和本地配置信息等。

        二、認(rèn)識操作注冊表的模塊

        在Python中就有這么一個(gè)神奇的模塊,它可以用來操作注冊表。它就是-----"winreg",一個(gè)Python自帶的操作注冊表的模塊。

        三、導(dǎo)入import winreg

        1.常量

        ”winreg“總有很多有用的方法,基本上就是操作注冊表中的鍵值,我們挑幾個(gè)重要的來說說。首先我們來了解下”winreg“中的各個(gè)常量:

        1).HKEY_ 常量winreg.HKEY_CLASSES_ROOT     #存儲應(yīng)用和shell的信息winreg.HKEY_CURRENT_USER     #當(dāng)前用戶自定義的信息winreg.HKEY_LOCAL_M(jìn)ACHINE    #計(jì)算機(jī)系統(tǒng)所有的信息winreg.HKEY_USERS            #所有用戶信息winreg.HKEY_PERFORMANCE_DATA #性能數(shù)據(jù)winreg.HKEY_CURRENT_CONFIG   #本地計(jì)算機(jī)系統(tǒng)的硬件配置文件winreg.HKEY_DYN_DATA         #windows98后的版本無法使用2).訪問權(quán)限
        winreg.KEY_ALL_ACCESS           #所有權(quán)限winreg.KEY_WRITE                #可寫winreg.KEY_READ                 #可讀winreg.KEY_EXECUTE              #可執(zhí)行相當(dāng)于KEY_READwinreg.KEY_QUERY_VALUE          #查詢注冊表鍵值winreg.KEY_SET_VALUE            #創(chuàng)建、刪除或設(shè)置一組注冊表值winreg.KEY_CREATE_SUB_KEY       #創(chuàng)建一個(gè)注冊表子項(xiàng)的注冊表鍵winreg.KEY_ENUMERATE_SUB_KEYS   #枚舉注冊表子項(xiàng)所需的注冊表鍵winreg.KEY_NOTIFY               #修改注冊表鍵時(shí)的提示winreg.KEY_CREATE_LINK          #創(chuàng)建一個(gè)鏈接,預(yù)留給系統(tǒng)用3).64位的具體應(yīng)用
        winreg.KEY_WOW64_64KEY  #在64位Windows應(yīng)用程序應(yīng)該運(yùn)行在64位注冊表視圖winreg.KEY_WOW64_32KEY  #在64位Windows應(yīng)用程序應(yīng)該運(yùn)行在32位注冊表視圖4).值類型
        winreg.REG_BINARY                  #任何形式的二進(jìn)制數(shù)據(jù)winreg.REG_DWORD                   #32位的數(shù)winreg.REG_DWORD_LITTLE_ENDIAN     #32位的數(shù)字在低位優(yōu)先的格式,相當(dāng)于REG_DWORDwinreg.REG_DWORD_BIG_ENDIAN        #32位的數(shù)字在高位優(yōu)先的格式winreg.REG_EXPAND_SZ               #以null結(jié)尾的字符串包含環(huán)境變量的引用(% %)winreg.REG_LINK                    #Unicode符號鏈接winreg.REG_M(jìn)ULTI_SZ                #一個(gè)以null結(jié)尾的字符串序列,由兩個(gè)空字符結(jié)束winreg.REG_NONE                    #沒有定義的值類型winreg.REG_QWORD                   #64位的數(shù)winreg.REG_QWORD_LITTLE_ENDIAN         #在低位優(yōu)先一個(gè)64位的數(shù)字格式,相當(dāng)于REG_QWORDwinreg.REG_RESOURCE_LIST               #設(shè)備驅(qū)動器資源列表winreg.REG_FULL_RESOURCE_DESCRIPTOR    #硬件設(shè)置winreg.REG_RESOURCE_REQUIREMENTS_LIST  #硬件資源列表winreg.REG_SZ                          #一個(gè)以null結(jié)尾的字符串

        四、注冊表相關(guān)操作

        1.連接遠(yuǎn)程計(jì)算機(jī)注冊表
        reg=winreg.ConnectRegistry('\計(jì)算機(jī)名',winreg.HKEY_LOCAL_M(jìn)ACHINE)#返回值是所開打鍵的句柄#第一個(gè)參數(shù)是指遠(yuǎn)程計(jì)算機(jī)名,第二個(gè)參數(shù)是指注冊表中的鍵,如HKEY_LOCAL_M(jìn)ACHINE,它是winreg中的常量。

        不過我們在這里要注意的是,如果遠(yuǎn)程注冊表沒有系統(tǒng)管理員權(quán)限,是無法正常訪問注冊表的。所以我們先要判斷下它的訪問權(quán)限。這里就要用到我們之前講的"ctypes"模塊中的判斷用戶是否是管理員用戶的方法了。

        import ctypesimport sysdef admin():    aa=ctypes.windll.shell32.IsUserAnAdmin()    return aa
        if admin()==1: #有管理員權(quán)限可打開遠(yuǎn)程注冊表    winreg.ConnectRegistry('\計(jì)算機(jī)名',winreg.HKEY_LOCAL_M(jìn)ACHINE)else:    if sys.version_info[0]==3: #python版本是3以上的版本        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)    else: #python2 版本        ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)2.關(guān)閉連接注冊表

        連接之后我們不想用了,就要隨手把它給關(guān)閉了,也很簡單,只要拿到打開注冊表的句柄,就可以關(guān)閉了。

        winreg.CloseKey(reg)

        可以看到句柄的值不一樣。

        其實(shí)還有一種方法,就是利用注冊處理對象的方法來關(guān)閉。

        reg.Close()

        注冊對象還支持上下文和分離處理對象周期:

        reg.detach() #返回一個(gè)整數(shù),記錄當(dāng)前對象的生命周期,如果關(guān)閉注冊句柄對象,那么則為03.打開注冊表鍵#打開指定的鍵,返回一個(gè)處理對象winreg.OpenKey(key, sub_key, reserved=0, access=winreg.KEY_READ)winreg.OpenKeyEx(key, sub_key, reserved=0, access=winreg.KEY_READ)#key:HKEY_ 常量#sub_key:指定鍵的子鍵#reserved:一個(gè)保留的證書,必須是零。默認(rèn)值為零#access:訪問權(quán)限4.創(chuàng)建新的注冊表鍵winreg.CreateKey(key,sub_key)winreg.CreateKeyEx(key,sub_key,reserved=0,access=winreg.KEY_WRITE)#key:HKEY_ 常量#sub_key:指定鍵的子鍵#reserved:一個(gè)保留的證書,必須是零。默認(rèn)值為零#access:訪問權(quán)限

        5.刪除注冊表中指定的鍵

        winreg.DeleteKey( key,sub_key) #不能刪除帶有子項(xiàng)的鍵winreg.DeleteKeyEx(key,sub_key,reserved=0,access=winreg.KEY_WOW64_64KEY)#不能刪除帶有子項(xiàng)的鍵winreg.DeleteValue(key, value)#從某個(gè)注冊鍵中刪除一個(gè)命名值項(xiàng)#用法與上面相同,只是結(jié)果是刪除罷了

        可以看到”cnm“已經(jīng)被刪除了。如果鍵不存在,刪除會報(bào)錯(cuò)。

        6.枚舉注冊表鍵winreg.EnumKey(key,index) #枚舉打開的注冊表鍵的子鍵,并返回一個(gè)字符串winreg.EnumValue(key,index)#枚舉打開的注冊表鍵值,并返回一個(gè)元組#index:一個(gè)整數(shù),用于標(biāo)識所獲取鍵的索引

        7.刷新注冊表鍵

        winreg.FlushKey(key)  #同步某個(gè)鍵的所有屬性寫入注冊表8.讀取注冊表winreg.LoadKey(key,sub_key,file_name)#file_name:讀取注冊表的數(shù)據(jù)的文件

        名9.查找注冊表鍵winreg.QueryInfoKey(key) #返回一個(gè)3元素元組的鍵的信息winreg.QueryValue(key,sub_key) #用一個(gè)字符串來檢索一個(gè)鍵的值winreg.QueryValueEx(key,value_name) #檢索與開放權(quán)限的注冊表鍵相關(guān)聯(lián)的指定值的數(shù)據(jù)類型和名稱

        10.保存注冊表鍵
        winreg.SaveKey(key, file_name) #保存指定的鍵和所有指定文件的注冊表子項(xiàng)

        11.啟用禁用注冊表winreg.DisableReflectionKey(key) #禁用winreg.EnableReflectionKey(key)  #啟用

        12.反射狀態(tài)是否禁用winreg.QueryReflectionKey(key) #結(jié)果為True 則表示禁用

        13.在指定鍵上關(guān)聯(lián)值winreg.SetValue(key, sub_key, type, value) #添加鍵和值winreg.SetValueEx(key,value_name,reserved,type,value)#將數(shù)據(jù)存儲在一個(gè)開放的注冊表鍵值字段#value_name:該字符串名稱的注冊表子鍵#type:值類型#value:子鍵的鍵值

        可以看出它們的區(qū)別,而且前者值類型只能指定為“winreg.REG_SZ”,而后者什么類型都可以。

        14.尋找應(yīng)用程序的位置并打開

        前面我們介紹了"winreg"幾乎所有的方法,現(xiàn)在我們就來具體做一個(gè)應(yīng)用練練手,就拿我們的360安全衛(wèi)士為例,我們嘗試著通過注冊表先找到它的位置然后打開它。那么接下來小編開始表演了:

        1).定位360安全衛(wèi)士的注冊表項(xiàng):1)).打開系統(tǒng)注冊表編輯器,然后進(jìn)行搜索關(guān)鍵字:

        2)).定位到注冊表路徑

        2).打開注冊表鍵

        通過我們找到的子鍵然后對其進(jìn)行查找操作,得到處理對象的句柄“reg”

        reg=winreg.OpenKey(winreg.HKEY_LOCAL_M(jìn)ACHINE,r"SOFTWAREWOW6432NodeMicrosoftWindowsCurrentVersionUninstall?安全衛(wèi)士")3).找到應(yīng)用的絕對路徑并打印

        通過數(shù)值名稱找到數(shù)值數(shù)據(jù),

        path=winreg.QueryValueEx(reg,'DisplayIcon')

        這樣就找到了這個(gè)應(yīng)用的絕對路徑了,返回值是一個(gè)元祖,我們使用索引訪問:

        path[0]

        可以看到我們已經(jīng)成功打印出了我們要找的應(yīng)用程序的絕對路徑了,接下來就可以愉快的打開它了。打開的方法多種多樣,什么“os”,“subprocess”,"ctypes","pywin32",一大堆的方法,不過小編還是覺得“os”最方便。

        os.popen(path[0])

        最后別忘了關(guān)閉對象處理句柄哦。

        #兩種方法都可以關(guān)閉winreg.CloseKey(reg)reg.Close()

        四、總結(jié)

        利用”winreg“可以完成很多騷操作,你也可以通過注冊表設(shè)置系統(tǒng)開機(jī)啟動項(xiàng)以及其它操作,如果你想往黑客方面發(fā)展的話。


        聲明: 本文由入駐維科號的作者撰寫,觀點(diǎn)僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報(bào)。

        發(fā)表評論

        0條評論,0人參與

        請輸入評論內(nèi)容...

        請輸入評論/評論長度6~500個(gè)字

        您提交的評論過于頻繁,請輸入驗(yàn)證碼繼續(xù)

        • 看不清,點(diǎn)擊換一張  刷新

        暫無評論

        暫無評論

          掃碼關(guān)注公眾號
          OFweek人工智能網(wǎng)
          獲取更多精彩內(nèi)容
          文章糾錯(cuò)
          x
          *文字標(biāo)題:
          *糾錯(cuò)內(nèi)容:
          聯(lián)系郵箱:
          *驗(yàn) 證 碼:

          粵公網(wǎng)安備 44030502002758號

          主站蜘蛛池模板: 伊人综合夜夜操| 柞水县| 91精品国产成人观看| 99国产视频| 久久99国产精品一区| 影音先锋成人片| 凌云县| A片网| 超碰人人干| 自拍偷拍视频网站| 亚洲AV无码乱码在线观看性色| 岛国精品在线播放| 国产亚洲av| 婷婷综合色| 亚洲高清中文字幕| 广南县| 美女福利导航| 武宁县| 人人操操| 车致| 亚洲无码2025| 99久久精品国产毛片| 欧美阿v视频| 欧美A∨| 色窝视频| 一区二区av| 日日噜噜夜夜久久亚洲一区二区| 亚洲成人综合网站| 国产八区| 欧美又粗又大又爽| 汝阳县| 日本一区免费视频| 江门市| 东京热加勒比久久综合| 乱子伦国产精品| a片地址| 嫩草亚洲小泬久久夂| 永寿县| 欧美人妖性爱| 黄山市| 色性AV|