.net 註冊表

來源:互聯網
上載者:User

標籤:private   har   close   利用   不用   key   修改   內建   布爾   

1. c#對註冊表的操作方法下面我們就來用.NET下託管語言C#註冊表操作,主要內容包括:登錄機碼的建立,開啟與刪除、索引值的建立(設定值、修改),讀取和刪除、判斷登錄機碼是否存在、判斷索引值是否存在。準備工作:1:要操作註冊表,我們必須要引入必要的命名空間: using Microsoft.Win32;在這個命名空間裡麵包含了許多註冊表相關的類,足夠我們使用了~~2:命名空間裡面提供了一個類:RegistryKey 利用它我們可以定位到註冊表最開頭的分支:ClassesRoot,CurrentUser,Users,LocalMachine,CurrentConfig如:RegistryKey key = Registry.LocalMachine;3:在操作的過程中涉及到子分支,要用\\進行深入,單個\會報錯!4:最後要調用RegistryKey對象的Close()關閉對註冊表的修改~~~5:以下我們的例子都是在LocalMachine分支下,請注意。  一:C#登錄機碼的建立,開啟與刪除1:建立建立登錄機碼主要用到RegistryKey 的CreateSubKey()方法。如: RegistryKey key = Registry.LocalMachine;RegistryKey software = key.CreateSubKey("software\\test");//在HKEY_LOCAL_MACHINE\SOFTWARE下建立名為test的登錄機碼。如果已經存在則不影響! 2:開啟開啟登錄機碼主要用到RegistryKey 的OpenSubKey()方法。如:注意,如果該登錄機碼不存在,這調用這個方法會拋出異常 RegistryKey key = Registry.LocalMachine;RegistryKey software = key.OpenSubKey("software\\test",true);//注意該方法後面還可以有一個布爾型的參數,true表示可以寫入。 3:刪除刪除登錄機碼主要用到RegistryKey 的DeleteSubKey()方法。如: RegistryKey key = Registry.LocalMachine;key.DeleteSubKey("software\\test",true); //該方法無傳回值,直接調用即可key.Close();  注意,如果該登錄機碼不存在,這調用這個方法會拋出異常  二:索引值的建立(設定值、修改),讀取和刪除1:建立(設定值、修改)對索引值的建立修改等操作主要用到RegistryKey 的SetValue()方法 複製代碼RegistryKey key = Registry.LocalMachine;RegistryKey software = key.OpenSubKey("software\\test",true); //該項必須已存在software.SetValue("test", "部落格園");//在HKEY_LOCAL_MACHINE\SOFTWARE\test下建立一個名為“test”,值為“部落格園”的索引值。如果該索引值原本已經存在,則會修改替換原來的索引值,如果不存在則是建立該索引值。// 注意:SetValue()還有第三個參數,主要是用於設定索引值的類型,如:字串,二進位,Dword等等~~預設是字串。如:// software.SetValue("test", "0", RegistryValueKind.DWord); //二進位資訊Key.Close();複製代碼 2:讀取 複製代碼string info = "";RegistryKey Key;Key = Registry.LocalMachine;myreg = Key.OpenSubKey("software\\test");// myreg = Key.OpenSubKey("software\\test",true);info = myreg.GetValue("test").ToString();myreg.Close();複製代碼info結果為:部落格園  3:刪除 RegistryKey delKey = Registry.LocalMachine.OpenSubKey("Software\\test", true);delKey.DeleteValue("test");delKey.Close();細心的讀者可能發現了第二個例子中OpenSubKey()方法參數與其他例子的不同。如果你要修改索引值,包括建立、設定、刪除索引值等都要在方法後面加個布爾參數,設定為true,表示可寫可改;如果僅僅只是讀取索引值可以不加,此時可寫關閉,你不能再往裡寫值(當然,你要加也可以true)!還有讀者提到讀寫預設索引值的問題,主要在設定、讀取的方法中將鍵名置空則就是對預設索引值的操作。如:software.SetValue("", "部落格園"); // 在HKEY_LOCAL_MACHINE\SOFTWARE\test修改預設索引值的值為“部落格園”。讀取類似!另外,預設的索引值是不能刪除的,所以不要用DeleteValue()方法去刪除,會拋出異常的!  三:判斷登錄機碼是否存在 複製代碼private bool IsRegeditItemExist()  {      string [] subkeyNames;      RegistryKey hkml = Registry.LocalMachine;      RegistryKey software = hkml.OpenSubKey("SOFTWARE");      //RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);      subkeyNames = software.GetSubKeyNames();      //取得該項下所有子項的名稱的序列,並傳遞給預定的數組中      foreach (string keyName in subkeyNames)      //遍曆整個數組      {          if (keyName == "test")          //判斷子項的名稱          {              hkml.Close();              return true ;          }      }      hkml.Close();      return false;  }複製代碼  四:判斷索引值是否存在 複製代碼private bool IsRegeditKeyExit(){  string[] subkeyNames;  RegistryKey hkml = Registry.LocalMachine;  RegistryKey software = hkml.OpenSubKey("SOFTWARE\\test");  //RegistryKey software = hkml.OpenSubKey("SOFTWARE\\test", true);  subkeyNames = software.GetValueNames();  //取得該項下所有索引值的名稱的序列,並傳遞給預定的數組中  foreach (string keyName  in subkeyNames)  {    if (keyName ==  "test") //判斷索引值的名稱    {        hkml.Close();        return true;    }         }  hkml.Close();  return false;}外部連結

2. 開機啟動的註冊表位置

 用VS內建的打包模組可以很方便的對項目進行打包部署,同時我們也可以在安裝部署時操作註冊表實現開機啟動軟體。具體實現如下:建立安裝部署這部分就不用說了,添加安裝部署項目後,滑鼠右鍵安裝項目->視圖->註冊表, 要使軟體在開機就運行,可以在HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run中添加索引值儲存軟體目錄。在這裡我們依次添加以上的項,然後在Run中添加索引值,鍵名可以自己起,value要填軟體的實體路徑。實體路徑是客戶在部署確定的,我們如何擷取呢?這裡我們可以使用[TARGETDIR]擷取客戶選擇的路徑,在加上軟體的開機檔案名稱。比如軟體開機檔案的名稱是Client.exe,那麼Value的值就為:[TARGETDIR]Client.exe.產生安裝項目。找到bin目錄下的setup.exe檔案運行,安裝結束後我們可以在註冊表中找到相應的索引值。重啟電腦系統就會自動運行我們設定的軟體。

.net 註冊表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.