驗證登錄機碼
安裝網路提供者時,您的應用程式應該建立本主題所述的登錄機碼和值。 這些索引鍵和值會提供有關系統上所安裝網路提供者的資訊給 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」。 這會將服務識別為在網路提供者群組中。
您也必須建立 ProviderName、 networkprovider 的子機碼。 此機碼包含下列描述網路提供者的值。
值 | 描述 |
---|---|
名稱 |
包含提供者的名稱。 此名稱會顯示給使用者在流覽對話方塊中的網路名稱,而且應該符合NETRESOURCE結構中傳回的lpProvider欄位。 此名稱應該是產品名稱的一些變化,最好也具有公司的某些指示,以便清楚且唯一。 例如,「MS-LanMan」 是一個好名稱,而 「Net」 會是不佳的選擇。 |
ProviderPath |
包含實作網路提供者之 DLL 的完整路徑。 MPR 會在此路徑上呼叫 LoadLibrary 。 |
下列值僅供支援認證管理功能、 NPLogonNotify 和 NPPasswordChangeNotify的網路提供者使用。
值 | Description |
---|---|
類別 |
識別這個提供者所支援之提供者功能的類別或型別的 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\
Group = 「NetworkProvider」
\ HKEY_LOCAL_MACHINE系統\CurrentControlSet\服務\LanmanWorkStation\NetworkProvider
Name = 「NT LanMan」ProviderPath = 「ntlanman.dll」
類別 = 0x00000001 (WN_NETWORK_CLASS)
\ HKEY_LOCAL_MACHINE系統\CurrentControlSet\服務\AnotherNetSvc\
Group = 「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」