身份验证注册表项

安装网络提供程序时,应用程序应创建本主题中所述的注册表项和值。 这些键和值向 MPR 提供有关安装在系统上的网络提供程序的信息。 MPR 在启动时检查这些密钥,并加载它找到的网络提供程序 DLL。

在创建一组密钥来保存有关网络提供商的信息之前,应将网络提供商的名称添加到 订单 密钥中。 此键是以下项的子项:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Control
            NetworkProvider

顺序键包含单个值 ProviderOrder,该值列出已安装的提供程序,并指定在循环访问提供程序直到找到接受提供程序的操作期间尝试这些提供程序的顺序。

ProviderOrder 值包含以逗号分隔的键名称列表。 ProviderOrder 中的每个密钥名称都标识一个网络提供程序。 当 MPR 循环访问提供程序时,它将按照提供程序在此列表中出现的顺序调用它们。

ProviderOrder 中设置的提供程序名称还应用作包含有关该提供程序信息的注册表项的名称。 提供程序特定的注册表项创建为以下项的子项:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services

换句话说, ProviderOrder 中指定的提供程序名称是特定于网络提供程序的项的注册表路径,相对于以下路径:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services

安装网络提供程序服务后,安装应用程序应添加密钥,如下所示:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services
            ProviderName

其中 ProviderName 是在订单键的 ProviderOrder 值中指定的网络提供程序的名称。 ProviderName 键下的 Group 值应设置为“NetworkProvider”。 这会将服务标识为在网络提供程序组中。

还必须创建 ProviderNamenetworkprovider 的子项。 此键包含以下描述网络提供程序的值。

说明
名称
包含提供程序的名称。 此名称在浏览对话框中显示为用户的网络名称,应与 NETRESOURCE 结构中返回的 lpProvider 字段匹配。 此名称应是产品名称的某种变体,最好也带有公司的一些指示,以便它是清晰和唯一的。 例如,“MS-LanMan”是一个好名称,而“Net”是一个糟糕的选择。
ProviderPath
包含实现网络提供程序的 DLL 的完整路径。 MPR 在此路径上调用 LoadLibrary

以下值仅由支持凭据管理功能 NPLogonNotifyNPPasswordChangeNotify 的网络提供程序使用。

说明

标识此提供程序支持的提供程序功能的类或类型的 DWORD 。 适当时, OR 运算符可以联接值。 的有效值为 WN_NETWORK_CLASS、WN_CREDENTIAL_CLASS、WN_PRIMARY_AUTHENT_CLASS 和 WN_SERVICE_CLASS。
尽管提供程序可能支持主验证器功能,但另一种方法将用于确定哪个验证器是主要验证器。
Windows XP/2000: 不支持切换主验证器,因此忽略此值。
AuthentProviderPath
这是导出凭据管理功能的 DLL 的完全限定文件名。 此值 (很有用,但仅在提供程序被标识为CREDENTIAL_CLASS或PRIMARY_AUTHENT_CLASS提供程序时才) 是必需的。 如果此类的提供程序不存在此值,则凭据管理功能应从由 ProviderPath 值标识的 DLL 中导出。 仅当需要将网络函数和凭据管理器函数打包到单独的 DLL 中时,才使用此值。

除了用于注册网络提供程序和凭据管理器的值外,还可以向注册表添加值以注册 DLL 以接收连接通知。 为此,请在以下项下创建REG_EXPAND_SZ值:

HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Control
            NetworkProvider
               Notifyees

此值应指定实现 连接通知 API 的 DLL 的路径。 此值的名称可以是所需的任何内容,只要它不与预先存在的值名称冲突。

示例

以下示例显示了安装了两个网络提供程序的系统的注册表项:LanmanWorkStation 和 AnotherNetSvc。 AnotherNetSvc 也是凭据管理器。 在本示例中,键名称为粗体,值名称为斜体。

\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\控制\NetworkProvider\

ProviderOrder = “LanmanWorkStation,AnotherNetSvc”

\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\控制\NetworkProvider\通知者

MyNotifyApp = “c:\connect\connect.dll”

\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\服务\LanmanWorkStation\

= “NetworkProvider”

\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\服务\LanmanWorkStation\NetworkProvider

Name = “NT LanMan”ProviderPath = “ntlanman.dll”

= 0x00000001 (WN_NETWORK_CLASS)

\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\服务\AnotherNetSvc\

= “NetworkProvider”

\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\服务\AnotherNetSvc\NetworkProvider

Name = “Another Network”ProviderPath = “c:\another\anet.dll”

= 0x00000003 (WN_NETWORK_CLASS |WN_CREDENTIAL_CLASS)

AuthentProviderPath = “c:\another\anetCM.dll”