HOW TO:在 Visual Basic 中建立登錄機碼並設定其值
My.Computer.Registry 物件的 CreateSubKey 方法可用來建立登錄機碼 (Registry Key)。
程序
若要建立登錄機碼
請使用 CreateSubKey 方法來指定要將機碼及機碼名稱存放在那個登錄區。參數 Subkey 不需區分大小寫。這個範例是將登錄機碼 MyTestKey 建立在 HKEY_CURRENT_USER 之下。
My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
若要建立登錄機碼並設定其值
請使用 CreateSubkey 方法來指定要將機碼及機碼名稱存放在那個登錄區。這個範例是將登錄機碼 MyTestKey 建立在 HKEY_CURRENT_USER 之下。
My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
使用 SetValue 方法來設定值。這個範例會設定字串值: 「MyTestKeyValue" 設為 "This is a test value"。
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey", "MyTestKeyValue", "This is a test value.")
範例
這個範例是將登錄機碼 MyTestKey 建立在 HKEY_CURRENT_USER 之下,並將字串值 MyTestKeyValue 設為 This is a test value。
My.Computer.Registry.CurrentUser.CreateSubKey("MyTestKey")
' Change MyTestKeyValue to This is a test value.
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\MyTestKey",
"MyTestKeyValue", "This is a test value.")
穩固程式設計
檢查登錄結構以找出適合機碼 (Key) 的位置。例如,您可能想要開啟目前使用者的 HKEY_CURRENT_USER\Software 機碼,並使用您的公司名稱來建立機碼,接著將登錄值加入至您的公司機碼。
當從 Web 應用程式讀取登錄時,目前的使用者會因 Web 應用程式中實作的驗證和模擬而不同。
更為安全的做法是將資料寫入至使用者資料夾 (CurrentUser),而不是寫入至本機電腦 (LocalMachine)。
當您建立登錄值時,必須先確定該值是否已經存在。其他處理序 (也許是惡意的處理序) 可能已建立該值並且具有其存取權。當您將資料放入登錄值時,其他處理序就可以使用該資料。若要預防這個問題,請使用 GetValue 方法。如果機碼不存在,這個方法會傳回 Nothing。
雖然登錄機碼會受到存取控制清單 (Access Control List,ACL) 保護,但是將機密資料 (例如密碼) 以純文字儲存在登錄中仍然是不安全的做法。
下列情形可能會造成例外狀況 (Exception):
機碼的名稱為 Nothing (ArgumentNullException)。
使用者沒有建立登錄機碼的使用權限 (SecurityException)。
機碼名稱超過 255 個字元的限制 (ArgumentException)。
機碼已關閉 (IOException)。
登錄機碼為唯讀 (UnauthorizedAccessException)。
安全性
若要執行這個處理序 (Process),組件需要 RegistryPermission 類別授與的權限層級。如果您正在部分信任的內容中執行動作,則會因權限不足而導致處理序擲回例外狀況。同樣地,使用者必須有可以建立或寫入設定的正確存取控制清單 (ACL)。例如,具有程式碼存取安全性權限的本機應用程式,可能不具有作業系統使用權限。如需詳細資訊,請參閱程式碼存取安全性的基本概念。