如何:在 Visual Basic 中讀取登錄機碼的值
您可以使用 My.Computer.Registry
物件的 GetValue
方法來讀取 Windows 登錄中的值。
如果下列範例中的機碼 "Software\MyApp" 不存在,則會擲回例外狀況。 如果下列範例中的 ValueName
(也就是 "Name") 不存在,則會傳回 Nothing
。
GetValue
方法也可用來判斷特定登錄機碼中是否有指定的值。
當程式碼從 Web 應用程式讀取登錄時,會由 Web 應用程式中所實作的驗證和模擬來決定目前的使用者。
讀取登錄機碼的值
使用
GetValue
方法,並指定路徑和名稱來讀取登錄機碼的值。 下列範例會從HKEY_CURRENT_USER\Software\MyApp
讀取Name
值,並顯示於訊息方塊中。Dim readValue = My.Computer.Registry.GetValue( "HKEY_CURRENT_USER\Software\MyApp", "Name", Nothing) MsgBox("The value is " & readValue)
這個程式碼範例也可用為 IntelliSense 程式碼片段。 在程式碼片段選擇器中,其位於 [Windows 作業系統] > [登錄] 中。 如需詳細資訊,請參閱 Code Snippets。
判斷登錄機碼中是否有一個值
使用
GetValue
方法來擷取此值。 下列程式碼會檢查此值是否存在;如果不存在,則傳回訊息。If My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\TestApp", "TestValue", Nothing) Is Nothing Then MsgBox("Value does not exist.") End If
穩固程式設計
登錄包含可用來儲存資料的最上層或根目錄機碼。 例如,HKEY_LOCAL_MACHINE 根目錄機碼可用於儲存所有使用者所使用的電腦層級設定,而 HKEY_CURRENT_USER 可用於儲存個別使用者的特定資料。
以下條件可能會造成例外狀況:
機碼的名稱是
Nothing
(ArgumentNullException)。使用者沒有讀取登錄機碼的權限 (SecurityException)。
機碼名稱超過 255 個字元的限制 (ArgumentException)。
.NET Framework 安全性
若要執行此程序,您的組件需要由 RegistryPermission 類別授與的權限層級。 若在部分信任內容中執行,程序可能會因為權限不足而擲回例外狀況。 同樣地,使用者必須有正確的 ACL,才能建立或寫入設定。 例如,具有程式碼存取安全性權限的本機應用程式,可能不具有作業系統權限。 如需詳細資訊,請參閱 Code Access Security Basics。
注意
在所有版本的 .NET Framework 與 .NET 中,程式碼存取安全性 (CAS) 均已被取代。 當使用 CAS 相關 API 時,最新版本的 .NET 不會接受 CAS 註釋,並會產生錯誤。 開發人員應尋求替代方案來完成安全性工作。