配置与资源管理全解析
发布时间: 2025-08-17 00:31:32 阅读量: 1 订阅数: 6 

# 配置与资源管理全解析
## 1. 注册表操作
### 1.1 注册表设置获取与删除
在应用程序开发中,若需使用某部分的所有设置,`GetAllSettings` 可能比反复使用 `GetSetting` 更快。而 `DeleteSetting` 方法可从注册表中移除设置、部分或整个应用程序的设置区域,示例代码如下:
```vb
' Remove the RegistrySettings/Config/CurrentDirectory setting.
DeleteSetting("RegistrySettings", "Config", "CurrentDirectory")
' Remove the RegistrySettings/Config section.
DeleteSetting("RegistrySettings", "Config")
' Remove all of the RegistrySettings application’s settings.
DeleteSetting("RegistrySettings")
```
### 1.2 注册表整洁的重要性
程序在卸载时应移除其在注册表中创建的所有条目,否则会使注册表杂乱,影响系统性能。为解决此问题,微软推广 XCopy 兼容性,即应用程序将值存储在配置文件而非注册表中,便于复制和移除文件。
### 1.3 My.Computer.Registry 命名空间
`My.Computer.Registry` 命名空间提供操作注册表的对象,它有七个属性指向 `RegistryKey` 类型的对象,对应不同的注册表子树,如下表所示:
| MY.COMPUTER.REGISTRY PROPERTY | REGISTRY SUBTREE |
| --- | --- |
| ClassesRoot | HKEY_CLASSES_ROOT |
| CurrentConfig | HKEY_CURRENT_CONFIG |
| CurrentUser | HKEY_CURRENT_USER |
| DynData | HKEY_DYNAMIC_DATA |
| LocalMachine | HKEY_LOCAL_MACHINE |
| PerformanceData | HKEY_PERFORMANCE_DATA |
| Users | HKEY_USERS |
### 1.4 注册表操作限制
在较新版本的 Windows 中,普通用户运行的程序对注册表部分区域无访问权限。普通用户可修改 `HKEY_CURRENT_USER` 中的值,若要访问其他区域,程序可能需以提升的权限运行。更多权限提升信息可参考微软文章:[User Account Control Step-by-Step Guide](http://technet.microsoft.com/library/cc709691.aspx)。
### 1.5 RegistryKey 类的常用属性和方法
`RegistryKey` 类提供了许多有用的属性和方法,如下表所示:
| PROPERTY OR METHOD | PURPOSE |
| --- | --- |
| Close | 关闭键并将修改后的内容写入磁盘 |
| CreateSubKey | 在该键内创建新子键或打开现有子键 |
| DeleteSubKey | 删除指定子键,若子键包含值则可删除,若包含其他子键则不可删除 |
| DeleteSubKeyTree | 递归删除子键及其所有子键 |
| DeleteValue | 从键中删除值 |
| Flush | 将键的更改写入注册表 |
| GetSubKeyNames | 返回子键名称的字符串数组 |
| GetValue | 返回键内指定值的值 |
| GetValueKind | 返回键内指定值的类型 |
| GetValueNames | 返回键内所有值的名称的字符串数组 |
| Name | 返回键的注册表路径 |
| OpenSubKey | 返回表示子键的 `RegistryKey` 对象 |
| SetValue | 设置键内的值 |
| SubKeyCount | 返回该键的直接子键数量 |
| ToString | 返回键的名称 |
| ValueCount | 返回该键中存储的值的数量 |
以下是使用 `My.Computer.Registry` 操作注册表的示例代码:
```vb
' Open the application’s Config subkey.
Dim config_section As Microsoft.Win32.RegistryKey =
My.Computer.Registry.CurrentUser.OpenSubKey(
"Software\VB and VBA Program Settings\RegistrySettings\Config\")
' Get the CurrentDirectory value.
Dim current_directory As String =
CType(config_section.GetValue("CurrentDirectory", "C:\"), String)
' Close the subkey.
config_section.Close()
' Delete the application’s whole Config section.
My.Computer.Registry.CurrentUser.DeleteSubKey(
"Software\VB and VBA Program Settings\RegistrySettings\Config")
```
使用 Visual Basic 原生注册表方法的等效代码如下:
```vb
' Get the CurrentDirectory value.
Dim current_directory As String =
GetSetting("RegistrySettings", "Config", "CurrentDirectory", "C:\")
' Delete the application’s whole Config section.
DeleteSetting("RegistrySettings", "Config")
```
一般来说,使用 Visual Basic 原生注册表方法更简单,但它们仅适用于 `HKEY_CURRENT_USER\Software\VB and VBA Program Settings` 注册表子树。若需访问此子树之外的键和值,则必须使用 `My.Computer.Registry` 对象。
## 2. 配置文件使用
### 2.1 配置文件概述
配置文件允许将程序运行时使用的信息存储在标准化的外部文件中。更改配置文件中的值后,程序下次启动时将使用新值,无需重新编译可执行程序。
### 2.2 使用动态属性配置
使用配置文件的一种方式是通过动态属性,Visual Basic 会在运行时自动从配置文件加载这些属性。具体操作步骤如下:
1. 定义要绑定到动态属性的设置:在解决方案资源管理器中,双击 `My Project` 并选择 `Settings` 选项卡,定义运行时要加载的设置。设置的范围可以是 `Application` 或 `User`,`Application` 范围的设置由所有程序用户共享,`User` 范
0
0
相关推荐










