共用方式為


WlanDeleteProfile 函式 (wlanapi.h)

WlanDeleteProfile 函式會刪除本機電腦上無線介面的無線配置檔。

語法

DWORD WlanDeleteProfile(
  [in] HANDLE     hClientHandle,
  [in] const GUID *pInterfaceGuid,
  [in] LPCWSTR    strProfileName,
       PVOID      pReserved
);

參數

[in] hClientHandle

用戶端的會話句柄,由先前呼叫 WlanOpenHandle 函式取得。

[in] pInterfaceGuid

要從中刪除配置檔之介面的 GUID。

[in] strProfileName

要刪除的配置檔名稱。 配置檔名稱會區分大小寫。 此字串必須以 NULL 結束。

Windows XP 搭配 SP3 和適用於 Windows XP 的無線 LAN API 與 SP2: 提供的名稱必須符合從網路的 SSID 自動衍生的設定檔名稱。 針對基礎結構網路配置檔,必須針對配置檔名稱提供 SSID。 針對臨機操作網路配置檔,提供的名稱必須是臨機操作網路的 SSID,後面接著 -adhoc

pReserved

保留供未來使用。 必須設定為 NULL

傳回值

如果函式成功,傳回值會ERROR_SUCCESS。

如果函式失敗,傳回值可能是下列其中一個傳回碼。

傳回碼 Description
ERROR_INVALID_PARAMETER
hClientHandle 參數為 NULL 或無效、pInterfaceGuid 參數為 NULLstrProfileName 參數為 NULL,或 pReserved 不是 NULL
ERROR_INVALID_HANDLE
在句柄數據表中找不到 hClientHandle 參數中指定的句柄。
ERROR_NOT_FOUND
在配置檔存放區中找不到 strProfileName 指定的無線設定檔。
ERROR_ACCESS_DENIED
呼叫端沒有足夠的許可權可刪除配置檔。
RPC_STATUS
各種錯誤碼。

備註

WlanDeleteProfile 函式會刪除本機電腦上無線介面的無線配置檔。

執行設定文件作業時,所有無線 LAN 函式都需要無線介面的介面 GUID。 拿掉無線介面時,其狀態會從無線 LAN 服務 (WLANSVC) 清除,而且無法執行任何配置檔作業。

如果無線 LAN 設定檔的 pInterfaceGuid 參數中指定的無線介面已從系統中移除,則 WlanDeleteProfile 函式可能會失敗 ERROR_INVALID_PARAMETER, (已移除的 USB 無線適配卡,例如) 。

若要在命令行刪除配置檔,請使用 netsh wlan delete profile 命令。 如需詳細資訊,請參閱 無線區域網路的 Netsh 命令 (wlan)

範例

下列範例會列舉本機電腦上的無線 LAN 介面,並嘗試在每個無線 LAN 介面上刪除特定的無線配置檔。

注意 如果未安裝並啟動無線 LAN 服務,此範例將無法載入 Windows Server 2008 和 Windows Server 2008 R2。
 
#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>
#include <wlanapi.h>
#include <objbase.h>
#include <wtypes.h>

#include <stdio.h>
#include <stdlib.h>

// Need to link with Wlanapi.lib and Ole32.lib
#pragma comment(lib, "wlanapi.lib")
#pragma comment(lib, "ole32.lib")

int _cdecl wmain(int argc, WCHAR ** argv)
{

    // Declare and initialize variables.

    HANDLE hClient = NULL;
    DWORD dwMaxClient = 2;      //    
    DWORD dwCurVersion = 0;
    DWORD dwResult = 0;
    DWORD dwRetVal = 0;
    int iRet = 0;

    WCHAR GuidString[39] = { 0 };

    unsigned int i;

    /* variables used for WlanEnumInterfaces  */

    PWLAN_INTERFACE_INFO_LIST pIfList = NULL;
    PWLAN_INTERFACE_INFO pIfInfo = NULL;

    LPCWSTR pProfileName = NULL;

    // Validate the parameters
    if (argc < 2) {
        wprintf(L"usage: %s <profile>\n", argv[0]);
        wprintf(L"   Deletes a wireless profile\n");
        wprintf(L"   Example\n");
        wprintf(L"       %s \"Default Wireless\"\n", argv[0]);
        exit(1);
    }

    pProfileName = argv[1];

    wprintf(L"Information for profile: %ws\n\n", pProfileName);

    dwResult = WlanOpenHandle(dwMaxClient, NULL, &dwCurVersion, &hClient);
    if (dwResult != ERROR_SUCCESS) {
        wprintf(L"WlanOpenHandle failed with error: %u\n", dwResult);
        return 1;
        // You can use FormatMessage here to find out why the function failed
    }

    dwResult = WlanEnumInterfaces(hClient, NULL, &pIfList);
    if (dwResult != ERROR_SUCCESS) {
        wprintf(L"WlanEnumInterfaces failed with error: %u\n", dwResult);
        return 1;
        // You can use FormatMessage here to find out why the function failed
    } else {
        wprintf(L"WLAN_INTERFACE_INFO_LIST for this system\n");

        wprintf(L"Num Entries: %lu\n", pIfList->dwNumberOfItems);
        wprintf(L"Current Index: %lu\n", pIfList->dwIndex);
        for (i = 0; i < pIfList->dwNumberOfItems; i++) {
            pIfInfo = (WLAN_INTERFACE_INFO *) & pIfList->InterfaceInfo[i];
            wprintf(L"  Interface Index[%u]:\t %lu\n", i, i);
            iRet =
                StringFromGUID2(pIfInfo->InterfaceGuid, (LPOLESTR) & GuidString,
                                sizeof (GuidString) / sizeof (*GuidString));
            // For c rather than C++ source code, the above line needs to be
            // iRet = StringFromGUID2(&pIfInfo->InterfaceGuid, (LPOLESTR) &GuidString, 
            //     sizeof(GuidString)/sizeof(*GuidString)); 
            if (iRet == 0)
                wprintf(L"StringFromGUID2 failed\n");
            else {
                wprintf(L"  InterfaceGUID[%d]: %ws\n", i, GuidString);
            }
            wprintf(L"  Interface Description[%d]: %ws", i,
                    pIfInfo->strInterfaceDescription);
            wprintf(L"\n");
            wprintf(L"  Interface State[%d]:\t ", i);
            switch (pIfInfo->isState) {
            case wlan_interface_state_not_ready:
                wprintf(L"Not ready\n");
                break;
            case wlan_interface_state_connected:
                wprintf(L"Connected\n");
                break;
            case wlan_interface_state_ad_hoc_network_formed:
                wprintf(L"First node in a ad hoc network\n");
                break;
            case wlan_interface_state_disconnecting:
                wprintf(L"Disconnecting\n");
                break;
            case wlan_interface_state_disconnected:
                wprintf(L"Not connected\n");
                break;
            case wlan_interface_state_associating:
                wprintf(L"Attempting to associate with a network\n");
                break;
            case wlan_interface_state_discovering:
                wprintf
                    (L"Auto configuration is discovering settings for the network\n");
                break;
            case wlan_interface_state_authenticating:
                wprintf(L"In process of authenticating\n");
                break;
            default:
                wprintf(L"Unknown state %ld\n", pIfInfo->isState);
                break;
            }
            wprintf(L"\n");

            dwResult = WlanDeleteProfile(hClient,
                                         &pIfInfo->InterfaceGuid,
                                         pProfileName, NULL);

            if (dwResult != ERROR_SUCCESS) {
                wprintf
                    (L"WlanDeleteProfile failed on this interface with error: %u\n",
                     dwResult);
                if (dwResult == ERROR_NOT_FOUND)
                    wprintf
                        (L"  Error was the following profile was not found: %ws\n",
                         pProfileName);
                // You can use FormatMessage to find out why the function failed
            } else {
                wprintf(L"Successfully deleted Profile Name: %ws\n",
                        pProfileName);
            }
            wprintf(L"\n");
        }

    }
    if (pIfList != NULL) {
        WlanFreeMemory(pIfList);
        pIfList = NULL;
    }

    return dwRetVal;
}


規格需求

需求
最低支援的用戶端 Windows Vista、Windows XP 與 SP3 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 wlanapi.h (包含 Wlanapi.h)
程式庫 Wlanapi.lib
Dll Wlanapi.dll
可轉散發套件 適用於 Windows XP 與 SP2 的無線 LAN API

另請參閱

原生 Wifi API 許可權

WlanGetProfile

WlanGetProfileList

WlanRenameProfile

WlanSetProfile