SfcIsKeyProtected 函数 (sfc.h)

确定指定的注册表项是否受到保护。 应用程序应避免替换受保护的注册表项。

语法

BOOL SfcIsKeyProtected(
  [in]           HKEY    KeyHandle,
  [in, optional] LPCWSTR SubKeyName,
  [in]           REGSAM  KeySam
);

参数

[in] KeyHandle

根注册表项的句柄。 这必须是以下 预定义键之一的句柄。

HKEY_CLASSES_ROOT

HKEY_CURRENT_USER

HKEY_LOCAL_MACHINE

HKEY_USERS

[in, optional] SubKeyName

包含子项名称的 以 null 结尾的字符串值。 此键必须是 由 hKey 参数标识的键的子项。 有关键名称的详细信息,请参阅 注册表的结构。 如果此参数为 NULL,则函数仅检查根注册表项是否受保护。

[in] KeySam

一个常量,指定在 64 位 Windows 上运行的应用程序应使用的备用注册表视图。 在 x86 平台上忽略此标志。 有关详细信息,请参阅 访问备用注册表视图

含义
0x0000
使用 32 位应用程序中的 32 位注册表项,并使用 64 位应用程序中的 64 位注册表项。
KEY_WOW64_64KEY
0x0100
使用 32 位或 64 位应用程序中的 64 位注册表项。
KEY_WOW64_32KEY
0x0200
使用 32 位或 64 位应用程序中的 32 位注册表项。

返回值

如果密钥受到保护,则返回值为非零值。

如果密钥不受保护,则返回值为零。

注解

如果路径存在并且受 WRP 保护,则密钥受 WRP 保护。 SfcIsKeyProtected 函数指示如果子项具有受 WRP 保护的父密钥,则子项受 WRP 保护。

例如,如果系统上存在以下注册表项,并且受 WRP 保护:

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         Microsoft
            <WinFeature>

SfcIsKeyProtected 函数返回以下子项的非零值。 函数无需存在新的子项,就可确定它受 WRP 保护。

HKEY_LOCAL_MACHINE
   SOFTWARE
      Classes
         Microsoft
            <WinFeature>
               <new subkey>

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 sfc.h
Library Sfc.lib
DLL Sfc.dll

另请参阅

SfcIsFileProtected