筛选针对应用程序配置单元执行的注册表操作
用户模式应用程序使用 注册表中的应用程序配置单元 来存储特定于应用的状态数据。
注册表筛选器驱动程序接收对其 RegistryCallback 例程的调用,以便在应用程序配置单元上执行注册表操作。 这些调用不区分应用程序配置单元上的注册表操作和其他类型的注册表配置单元上的操作。
若要加载应用程序配置单元,应用将调用 RegLoadAppKey。
应用程序配置单元加载于 下\\REGISTRY\\A
,而不是在 或 \\REGISTRY\\USER
下\\REGISTRY\\MACHINE
加载。
请注意,无法遍历 \\REGISTRY\\A
。 尝试在 \REGISTRY\A 下打开项失败, STATUS_ACCESS_DENIED错误状态。
若要访问应用程序配置单元中的密钥,应用使用它在调用 RegLoadAppKey 时收到的句柄。
关闭配置单元的所有句柄后,操作系统会自动卸载应用程序配置单元。
与其他类型的注册表配置单元相比,每个密钥都使用其自己的安全描述符进行保护,应用程序配置单元的安全性基于配置单元文件的安全描述符。 这表示:
- 尝试在应用程序配置单元中的单个密钥上设置安全描述符失败, STATUS_ACCESS_DENIED错误状态。
- 成功加载配置单元的实体可以修改整个配置单元。
处理 create-key 和 open-key 操作 (的注册表筛选器驱动程序,这些操作由 RegNtPreOpenKey、RegNtPreOpenKeyEx、RegNtPreCreateKey 和 RegNtPreCreateKeyEx 通知值指示,) 必须注意不要使用从) 开始\\REGISTRY\\A\\
的绝对 (路径来打开应用程序配置单元;只有注册表管理器才能执行此操作。
例如,如果注册表筛选器驱动程序尝试以这种方式打开应用程序配置单元, (调用 ZwOpenKey 例程) ,则操作将失败并 STATUS_ACCESS_DENIED错误状态。
绝对路径名称字符串显示在 REG_CREATE_KEY_INFORMATION、REG_CREATE_KEY_INFORMATION_V1、REG_OPEN_KEY_INFORMATION 或 REG_OPEN_KEY_INFORMATION_V1 结构的 CompleteName 成员中。