九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
如何用.NET操作Windows注冊(cè)表

如何用.NET操作Windows注冊(cè)表

 

注冊(cè)表是每個(gè)Windows系統(tǒng)的重要組成部分。它包含與操作系統(tǒng)配置,硬件和所安裝軟件有關(guān)的大量信息。在.NET出現(xiàn)前,通過(guò)編程訪問(wèn)注冊(cè)表要應(yīng)用Windows API(應(yīng)用程序接口)。.NET Framework通過(guò)Microsoft.Win32命名空間簡(jiǎn)化了這一過(guò)程。本文詳細(xì)說(shuō)明如何通過(guò).NET操作注冊(cè)表。

注冊(cè)表概述

Windows注冊(cè)表呈樹(shù)狀或?qū)哟谓Y(jié)構(gòu)。Windows提供注冊(cè)表編輯器(regedt32.exe/regedit/exe)對(duì)其進(jìn)行編輯。注冊(cè)表由包含所有數(shù)據(jù)的鍵構(gòu)成。這些鍵不能被刪除或重命名。下表概括說(shuō)明了這些鍵:

  • HKEY_CURRENT_USER:保存當(dāng)前登錄用戶的配置信息。用戶的文件夾、屏幕顏色和控制面板設(shè)置都存儲(chǔ)在這個(gè)鍵中(也可稱(chēng)作用戶基本資料)。它是HKEY_USERS的一個(gè)子鍵。
  • HKEY_USERS:這個(gè)鍵中包含計(jì)算機(jī)上所有用戶的基本資料。
  • HKEY_LOCAL_MACHINE:這個(gè)鍵包含計(jì)算機(jī)的配置信息。
  • HKEY_CLASSES_ROOT:這個(gè)鍵包含文件關(guān)聯(lián)信息。也就是說(shuō),它告訴Windows打開(kāi)特定類(lèi)型的文件應(yīng)使用何種程序。它是HKEY_LOCAL_MACHINE\Software的一個(gè)子鍵。
  • HKEY_CURRENT_CONFIG:這個(gè)鍵包含計(jì)算機(jī)硬件信息。
  • HKEY_PERFORMANCE_DATA:在安裝軟件時(shí),每個(gè)軟件組件為它的對(duì)象和計(jì)數(shù)器建立鍵,并在執(zhí)行時(shí)寫(xiě)入計(jì)數(shù)器數(shù)據(jù)。這種性能數(shù)據(jù)存儲(chǔ)在這個(gè)鍵中。

這些鍵能夠以各種方式存儲(chǔ)數(shù)據(jù)。在注冊(cè)表中,共有六個(gè)數(shù)據(jù)類(lèi)型可用來(lái)存儲(chǔ)數(shù)據(jù)。這些數(shù)據(jù)類(lèi)型如下表所示:

  • REG_BINARY:以一串十六進(jìn)制數(shù)對(duì)存儲(chǔ)的二進(jìn)制數(shù)據(jù),每個(gè)數(shù)對(duì)的值在0-255之間。REG_BINARY的長(zhǎng)度不固定。
  • REG_DWORD:它為雙字?jǐn)?shù)據(jù)類(lèi)型,由四個(gè)字節(jié)(32位)的數(shù)字組成,其值在0-4GB之間。設(shè)備驅(qū)動(dòng)器和服務(wù)參數(shù)通常為此數(shù)據(jù)類(lèi)型。
  • REG_EXPAND_SZ:這個(gè)可擴(kuò)充的字符串?dāng)?shù)據(jù)類(lèi)型實(shí)際上是一個(gè)變量。在使用時(shí),當(dāng)字符串被系統(tǒng)調(diào)用時(shí),它的值被真正的值代替。
  • REG_MULTI_SZ:多個(gè)字符串值,不同的值用空格、逗號(hào)和其它符號(hào)隔開(kāi)。
  • REG_SZ:固定長(zhǎng)度的文字字符串值。
  • REG_FULL_RESOURCE_DESCRIPTOR:它用于硬件注冊(cè)表鍵中。

了解了注冊(cè)表的基礎(chǔ)知識(shí),你就能夠利用適當(dāng)?shù)?NET類(lèi)來(lái)處理注冊(cè)表的內(nèi)容。

處理注冊(cè)表

Microsoft.Win32命名空間為處理注冊(cè)表提供必要的類(lèi)。命名空間中的兩個(gè)主要的類(lèi)為Registry和RegistryKey。Registry聯(lián)合RegistryKey一起訪問(wèn)個(gè)別的注冊(cè)表鍵。它映射到前面列出的主要注冊(cè)表鍵。

  • Registry.CurrentUser
  • Registry.Users
  • Registry.LocalMachine
  • Registry.ClassesRoot
  • Registry.CurrentConfig
  • Registry.PerformanceData

RegistryKey類(lèi)利用前面列表中的一個(gè)Registry類(lèi)項(xiàng)目來(lái)訪問(wèn)單個(gè)的注冊(cè)表鍵。下面的C# Windows應(yīng)用程序代碼顯示ClassesRoot注冊(cè)表鍵中一個(gè)特殊條目的信息。

RegistryKeyrootKey = Registry.ClassesRoot;

rootKey = rootKey.OpenSubKey(".doc", true);

MessageBox.Show(rootKey.GetValue("").ToString());

MessageBox.Show(rootKey.GetValue("Content Type").ToString());

foreach(string sub in rootKey.GetSubKeyNames()) {

MessageBox.Show(sub);

RegistryKeytmp = rootKey.OpenSubKey(sub);

MessageBox.Show(tmp.Name);

}

foreach(string test in rootKey.GetValueNames()) {

MessageBox.Show(rootKey.GetValue(test).ToString());

}

代碼參考正確的命名空間以利用注冊(cè)表類(lèi)。

using Microsoft.Win32;

代碼訪問(wèn)ClassesRoot鍵(.doc)中的特定子鍵。該鍵對(duì)系統(tǒng)如何處理帶特定文件擴(kuò)展名(.doc)的文件進(jìn)行定義。前兩個(gè)消息對(duì)話框語(yǔ)句顯示鍵本身的信息。提交到RegistryKey類(lèi)GetValue方法的空值顯示默認(rèn)鍵值。第二個(gè)消息對(duì)話框顯示與鍵有關(guān)的內(nèi)容類(lèi)型(MIME類(lèi)型)。

第一個(gè)foreach塊顯示注冊(cè)表鍵中所有子鍵的名稱(chēng)。第二個(gè)foreach塊顯示與前兩個(gè)消息對(duì)話框語(yǔ)句一樣的信息,但使用GetValueNames方法獲得同樣的結(jié)果(所以你不必知道項(xiàng)目的名稱(chēng))。

對(duì)應(yīng)的VB.NET代碼如下:

Dim rootKey As RegistryKey

rootKey = Registry.ClassesRoot

Dim regSubKey As RegistryKey

Dim subk As String, test As String

Dim tmp As RegistryKey

rootKey = rootKey.OpenSubKey(".doc", True)

MessageBox.Show(rootKey.GetValue("").ToString())

MessageBox.Show(rootKey.GetValue("Content Type").ToString())

For Each subk In rootKey.GetSubKeyNames()

MessageBox.Show(subk)tmp = rootKey.OpenSubKey(subk)

MessageBox.Show(tmp.Name)

Next

or Each test In rootKey.GetValueNames()

MessageBox.Show(rootKey.GetValue(test).ToString())

Next

:子鍵名不區(qū)分大小寫(xiě)。

增加注冊(cè)表值

查閱注冊(cè)表值不錯(cuò),但有時(shí)候你需要增加注冊(cè)表值。通常,應(yīng)用程序把注冊(cè)表當(dāng)作存儲(chǔ)應(yīng)用程序相關(guān)數(shù)據(jù)的中央倉(cāng)庫(kù)。這種方法可以接受,但為避免系統(tǒng)或應(yīng)用程序出現(xiàn)問(wèn)題,我們不建議修改Windows系統(tǒng)或其它應(yīng)用程序的值。
 

RegistryKey類(lèi)中包含CreateSubKey方法,可用它來(lái)增加特定注冊(cè)表鍵元素的子鍵。另外,SetValue方法允許你增加鍵的項(xiàng)目與值。下面的實(shí)例給HKEY_CLASSES_ROOT鍵增加了一個(gè)子鍵。給鍵增加空白值設(shè)定了它的默認(rèn)鍵值。

RegistryKeyrootKey = Registry.ClassesRoot;

RegistryKeyregSubKey;

rootKey = rootKey.OpenSubKey(".doc", true);

regSubKey = rootKey.CreateSubKey ("Newsletter");

regSubKey.SetValue("Site", "www.techrepublic.com");

regSubKey.SetValue("", "Test Link");

對(duì)應(yīng)的VB.NET代碼如下:

Dim rootKey As RegistryKey

rootKey = Registry.ClassesRoot

Dim regSubKey As RegistryKey

rootKey = rootKey.OpenSubKey(".doc", True)

regSubKey = rootKey.CreateSubKey("Newsletter")

regSubKey.SetValue("Site", "www.techrepublic.com")

regSubKey.SetValue("", "Test Link")

用DeleteSubKey方法可以方便地刪除鍵,所以我們可以用下面的VB.NET代碼輕松刪除新建的子鍵。

Dim rootKey As RegistryKey

rootKey = Registry.ClassesRoot

rootKey = rootKey.OpenSubKey(".doc", True)

rootKey.DeleteSubKey("Newsletter")

另外,DeleteSubKeyTree方法允許你刪除一個(gè)子鍵和遞歸子級(jí)子鍵。

警告

注冊(cè)表是Windows中最重要的組件。因此,在處理其內(nèi)容時(shí),你應(yīng)該極度小心;因?yàn)闊o(wú)意改變系統(tǒng)或應(yīng)用程序鍵可能會(huì)造成系統(tǒng)或應(yīng)用程序故障。但是,注冊(cè)表可作為一個(gè)存儲(chǔ)點(diǎn),用來(lái)存儲(chǔ)你所開(kāi)發(fā)的應(yīng)用程序的專(zhuān)用數(shù)據(jù)。幸運(yùn)的是,不管你應(yīng)用哪種語(yǔ)言,用.NET Framework處理注冊(cè)表都比較容易。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java對(duì)注冊(cè)表操作
利用JAVA向注冊(cè)表里寫(xiě)信息
Kendy--DELPHI加注冊(cè)表自啟動(dòng)的最簡(jiǎn)單代碼
DOS下對(duì)注冊(cè)表的編程
vb.net下對(duì)注冊(cè)表的各種操作
delphi注冊(cè)表操作(讀取、添加、刪除、修改)完全手冊(cè) (2)
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服