驗證登錄機碼
安裝網路提供者時,您的應用程式應該建立本主題中所述的登錄機碼和值。 這些索引鍵和值會提供有關系統上所安裝之網路提供者的 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索引鍵 順序的值所指定。 Group 值下 ProviderName 機碼應設定為 “NetworkProvider”。 這會將服務識別為位於網路提供者群組中。
您也必須建立 ProviderName的子機碼,networkprovider。 此索引鍵包含下列描述網路提供者的值。
價值 | 描述 |
---|---|
名稱 |
包含提供者的名稱。 此名稱會在瀏覽對話框中向用戶顯示為網路名稱,而且應該符合 NETRESOURCE 結構中所傳回的 lpProvider 字段。 此名稱應該是產品名稱的一些變化,最好也具有公司的某些指示,以便清楚且是唯一的。 例如,“MS-LanMan” 是個好名字,而 “Net” 會是一個糟糕的選擇。 |
ProviderPath |
包含實作網路提供者之 DLL 的完整路徑。 MPR 會在此路徑上呼叫 LoadLibrary。 |
下列值只供支持認證管理功能的網路提供者使用,NPLogonNotify 和 NPPasswordChangeNotify。
價值 | 描述 |
---|---|
類別 |
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
這個值應該指定 DLL 的路徑,該 DLL 會實作 連線通知 API。 只要此值與預先存在的值名稱不衝突,這個值的名稱就可以是您想要的任何專案。
例
下列範例顯示已安裝兩個網路提供者之系統的登錄機碼:LanmanWorkStation 和 AnotherNetSvc。 另一個NetSvc 也是認證管理員。 在此範例中,索引鍵名稱為粗體,而值名稱為斜體。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\順序
ProviderOrder = “LanmanWorkStation,AnotherNetSvc”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Notifyees
MyNotifyApp = “c:\connect\connect.dll”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\
群組 = “NetworkProvider”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\NetworkProvider
Name = “NT LanMan”ProviderPath = “ntlanman.dll”
類別 = 0x00000001 (WN_NETWORK_CLASS)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AnotherNetSvc\
群組 = “NetworkProvider”
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AnotherNetSvc\NetworkProvider
Name = “Another Network”ProviderPath = “c:\another\anet.dll”
類別 = 0x00000003 (WN_NETWORK_CLASS |WN_CREDENTIAL_CLASS)
AuthentProviderPath = “c:\another\anetCM.dll”