wlanapi.h (wlanSaveTemporaryProfile 函数)

WlanSaveTemporaryProfile 函数将临时配置文件保存到配置文件存储中。

语法

DWORD WlanSaveTemporaryProfile(
  [in]           HANDLE     hClientHandle,
  [in]           const GUID *pInterfaceGuid,
  [in]           LPCWSTR    strProfileName,
  [in, optional] LPCWSTR    strAllUserProfileSecurity,
  [in]           DWORD      dwFlags,
  [in]           BOOL       bOverWrite,
                 PVOID      pReserved
);

参数

[in] hClientHandle

客户端的会话句柄,由先前对 WlanOpenHandle 函数的调用获取。

[in] pInterfaceGuid

接口的 GUID。

[in] strProfileName

要保存的配置文件的名称。 配置文件名称区分大小写。 此字符串必须以 NULL 结尾。

[in, optional] strAllUserProfileSecurity

在所有用户配置文件上设置安全描述符字符串。 默认情况下,对于新的所有用户配置文件,所有用户都对该配置文件具有写入访问权限。 有关配置文件权限的详细信息,请参阅“备注”部分。

如果 dwFlags 设置为 WLAN_PROFILE_USER,则忽略此参数。

如果对于所有用户配置文件,此参数设置为 NULL ,则使用默认权限。

如果此参数对于所有用户配置文件不为 NULL ,则会在创建安全描述符对象并将其分析为字符串后,创建或修改与该配置文件关联的安全描述符字符串。

[in] dwFlags

指定要在配置文件上设置的标志。 可以组合这些标志。

含义
0
配置文件是一个全用户配置文件。
WLAN_PROFILE_USER
0x00000002
配置文件是每用户配置文件。
WLAN_PROFILE_CONNECTION_MODE_SET_BY_CLIENT
0x00010000
配置文件由客户端创建。
WLAN_PROFILE_CONNECTION_MODE_AUTO
0x00020000
配置文件由自动配置模块创建。

[in] bOverWrite

指定此配置文件是否覆盖现有配置文件。 如果此参数为 FALSE 且配置文件已存在,则不会覆盖现有配置文件,并且将返回错误。

pReserved

保留供将来使用。 必须设置为 NULL

返回值

如果函数成功,则返回值为 ERROR_SUCCESS。

如果函数失败,则返回值可能是以下返回代码之一。

返回代码 说明
ERROR_INVALID_PARAMETER
出现以下情况之一:
  • hClientHandleNULL 或无效。
  • pInterfaceGuidNULL
  • pReserved 不为 NULL
  • dwFlags 未设置为上表中指定的一个或多个值的组合。
  • dwFlags 设置为 WLAN_PROFILE_CONNECTION_MODE_AUTO,strProfileName 设置为 NULL
ERROR_INVALID_HANDLE
在句柄表中找不到句柄 hClientHandle
ERROR_NOT_SUPPORTED
此函数是从不受支持的平台调用的。 如果从具有 SP3 的 Windows XP 或具有 SP2 客户端的 Windows XP 无线 LAN API 调用此函数,则将返回此值。
RPC_STATUS
各种错误代码。
ERROR_INVALID_STATE
接口当前未使用临时配置文件进行连接。

注解

临时配置文件是传递给 WlanConnect 或由发现引擎生成的配置文件。 可以使用临时配置文件建立网络连接。 使用此 API 会将临时配置文件和关联的用户数据保存到配置文件存储中。

新配置文件将添加到列表顶部的组策略配置文件后面。 如果覆盖现有配置文件,则配置文件在列表中的位置不会更改。

所有用户配置文件具有三个关联的权限:读取、写入和执行。 如果用户具有读取访问权限,则用户可以查看配置文件权限。 如果用户具有执行访问权限,则用户具有读取访问权限,并且用户也可以使用配置文件连接到网络并断开其连接。 如果用户具有写入访问权限,则用户具有执行访问权限,并且用户还可以修改和删除与配置文件关联的权限。

下面介绍了创建安全描述符对象并将其分析为字符串的过程。

  1. 调用 InitializeSecurityDescriptor 以在内存中创建安全描述符。
  2. 调用 SetSecurityDescriptorOwner
  3. 调用 InitializeAcl 以在内存中创建自由访问控制列表 (DACL) 。
  4. 调用 AddAccessAllowedAceAddAccessDeniedAce (ACE) 添加到 DACL。 根据需要将 AccessMask 参数设置为以下按位 OR 组合之一:
    • WLAN_READ_ACCESS
    • WLAN_READ_ACCESS |WLAN_EXECUTE_ACCESS
    • WLAN_READ_ACCESS |WLAN_EXECUTE_ACCESS |WLAN_WRITE_ACCESS
  5. 调用 SetSecurityDescriptorDacl 将 DACL 添加到安全描述符。
  6. 调用 ConvertSecurityDescriptorToStringSecurityDescriptor 将描述符转换为字符串。
然后,在调用 WlanSaveTemporaryProfile 时,ConvertSecurityDescriptorToStringSecurityDescriptor 返回的字符串可用作 strAllUserProfileSecurity 参数值。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 wlanapi.h (包括 Wlanapi.h)
Library Wlanapi.lib
DLL Wlanapi.dll

另请参阅

本机 Wifi API 权限