熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

使用 Visual Basic .NET 訪問注冊表

2013-11-13 10:32:08  來源: .NET編程 
使用 Visual Basic NET 函數訪問注冊表 
   
  Visual Basic NET 提供了四個函數以訪問注冊表要使用這些函數必須具有 RegistryPermissionAccess 枚舉的 Read 和 Write 權限以完全信任身份運行的任何代碼(根據默認的安全原則這是指安裝在用戶本地硬盤驅動器上的任何代碼)都具有訪問注冊表的權限有關詳細信息請參閱 RegistryPermission Class     

  注意不能通過 GetSetting 函數返回段的名稱 
   
  如果不能保存項設置將產生一個 ArgumentException 對象有關此異常的詳細信息請參閱 ArgumentException 
   
  下面的示例創建了一個注冊表項和兩個子項接著顯示第一個項的值並顯示第一個項及其子項的值然後刪除第二個子項並顯示第一個項及其子項的值以確認刪除了第二個子項
  
   創建第一個項
  SaveSetting(TestAppStartupFirstKeyFirst)
   創建第一個子項
  SaveSetting(TestAppFirstKeyFirstSubKeyFirstSub)
   創建第二個子項
  SaveSetting(TestAppFirstKeySecondSubKeySecondSub)
  Try
   寫出第一個項的值
   ConsoleWriteLine ((GetSetting(TestAppStartupFirstKey))
   寫出第一個項及其兩個子項
   ConsoleWriteLine (GetAllSettings(TestAppStartup))
   Catch e As ArgumentException
   Catch e As Exception
   ConsoleWriteLine (eGetTypeToString)
   Finally
  End Try
  DeleteSetting(TestAppFirstKeySecondSubKey)
  Try
   ConsoleWriteLine (GetSetting(TestAppStartupFirstKey))
   ConsoleWriteLine (GetAllSettings(TestAppStartup))
   Catch e As ArgumentException
   Catch e As Exception
   ConsoleWriteLine (eGetTypeToString)
   Finally
  End Try 
   
  使用內置注冊表訪問函數具有以下限制只能訪問位於 HKEY_CURRENT_USER\Software\VB and VBA Program Settings 下的注冊表項為此必須登錄到系統因為 HKEY_CURRENT_USER 注冊表項僅在登錄到系統時才被激活 
   
  從一個非交互進程(如 mtxexe)訪問的注冊表設置應存儲在 HKEY_LOCAL_MACHINE\Software\ 或 HKEY_USER\DEFAULT\Software 注冊表項下  
   
使用 NET 框架訪問注冊表 
   
  由於使用 GetSetting 和 SaveSetting 函數只能訪問位於 HKEY_CURRENT_USER\Software\VB and VBA Program Settings 下的項因而具有一定的局限性為此可以使用 NET 框架 MicrosoftWin 名稱空間中的 Registry 和 RegistryKey 類有關詳細信息請參閱 Registry 和 RegistryKey 
   
  Registry 類提供基本的注冊表項用於訪問子項及其值基項本身是只讀的下表列出並說明了 Registry 類中提供的七個項 
   
  下面的示例顯示了如何從 HKEY_CURRENT_USER 中讀取一個 DWORD 值
  
  Imports MicrosoftWin
  Dim regVersion As RegistryKey
  Dim keyValue As String
  keyValue = Software\\Microsoft\\TestApp\\
  regVersion = RegistryCurrentUserOpenSubKey(keyValue False)
  Dim intVersion As Integer =
  If (Not regVersion Is Nothing) Then
   intVersion = regVersionGetValue(Version )
   regVersionClose()
  End If 
   
  下面的示例將讀取遞增然後向 HKEY_CURRENT_USER 中寫入一個 DWORD 值
  
  Imports MicrosoftWin
  Dim regVersion As RegistryKey
  regVersion =
  RegistryCurrentUserOpenSubKey(SOFTWARE\\Microsoft\\TestApp\\ True)
  If regVersion Is Nothing Then
   不存在該項創建該項
   regVersion =
  RegistryCurrentUserCreateSubKey(SOFTWARE\\Microsoft\\TestApp\\)
  End If
  
  Dim intVersion As Integer =
  If (Not regVersion Is Nothing) Then
   intVersion = regVersionGetValue(Version )
   intVersion = intVersion +
   regVersionSetValue(Version intVersion)
   regVersionClose()
  End If 

  權限
 
   
  SystemSecurityPermission 名稱空間中的 RegistryPermission 類控制了訪問注冊表變量的能力注冊表變量不應存儲在不具備 RegistryPermission 的代碼可以訪問的內存位置同樣在授予權限時應只授予完成工作所需的最小權限有關詳細信息請參閱 RegistryPermission 和 SystemSecurityPermissions 注冊表訪問權限值由 RegistryPermissionAccess 枚舉定義有關詳細信息請參閱RegistryPermissionAccess下表詳細說明了其中的各項 
   
   注意如果需要某種權限組合例如允許讀取和寫入訪問而拒絕創建訪問則可以使用一個 Or 操作來實現如下所示
  
  RegistryPermissionAccessWrite Or RegistryPermissionAccessRead _
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TestApp 
   
 
  使用注冊表編輯器訪問注冊表 
   
  當使用部署項目時還可以選擇使用注冊表編輯器來指定要添加到目標計算機的注冊表中的注冊表項和項值有關詳細信息請參閱 Registry Editor 
   
  訪問注冊表編輯器 
   
   打開一個部署項目 
   
   在 View(查看)菜單中指向 Editor(編輯器)然後單擊 Registry(注冊表) 
   
  有關在部署項目中使用注冊表編輯器的詳細信息請參閱 Registry Settings Management in Deployment 
   
  總結 
   
  注冊表是存儲有關應用程序以及各個用戶設置的信息的最佳位置此外也可以從中查看有關系統硬件或要與之交互的應用程序的信息 
   
  對於大多數項目通過 Visual Basic 運行時函數訪問注冊表已經足夠但在某些情況下也可能需要使用 NET 框架的 Registry 類和 RegistryKey 類這兩種操作都很簡單但由於這種訪問涉及安全問題所以要注意避免產生安全隱患例如在項中包含一個純文本密碼或其他敏感信息等

From:http://tw.wingwit.com/Article/program/net/201311/13928.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.