首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我使用WNetAddConnection2或WNetAddConnection3时,如何让操作系统保存我的凭据?

在使用WNetAddConnection2或WNetAddConnection3函数时,可以通过以下步骤让操作系统保存凭据:

  1. 创建一个CONNECTINFOSTRUCT结构体,并设置其中的dwFlags字段为CONNECT_INTERACTIVE | CONNECT_CMD_SAVECRED。CONNECT_INTERACTIVE标志表示连接是交互式的,CONNECT_CMD_SAVECRED标志表示保存凭据。
  2. 创建一个NETRESOURCE结构体,并设置其中的dwScope字段为RESOURCE_GLOBALNET,lpLocalName字段为NULL(如果不需要映射到本地驱动器的话),lpRemoteName字段为要连接的远程网络位置,lpProvider字段为NULL。
  3. 调用WNetAddConnection3函数,将CONNECTINFOSTRUCT结构体和NETRESOURCE结构体作为参数传入,以建立连接并保存凭据。

以下是一个示例代码,演示了如何使用WNetAddConnection3函数来保存凭据:

代码语言:txt
复制
#include <Windows.h>
#include <winnetwk.h>

int main()
{
    CONNECTINFOSTRUCT connectInfo;
    connectInfo.dwSize = sizeof(CONNECTINFOSTRUCT);
    connectInfo.lpUsername = "username"; // 填写用户名
    connectInfo.lpPassword = "password"; // 填写密码
    connectInfo.lpLocalName = NULL;
    connectInfo.lpRemoteName = "\\\\server\\share"; // 填写要连接的远程网络位置
    connectInfo.lpProvider = NULL;
    connectInfo.dwFlags = CONNECT_INTERACTIVE | CONNECT_CMD_SAVECRED;

    NETRESOURCE netResource;
    netResource.dwScope = RESOURCE_GLOBALNET;
    netResource.dwType = RESOURCETYPE_DISK;
    netResource.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE;
    netResource.dwUsage = RESOURCEUSAGE_CONNECTABLE;
    netResource.lpLocalName = NULL;
    netResource.lpRemoteName = "\\\\server\\share"; // 填写要连接的远程网络位置
    netResource.lpProvider = NULL;

    DWORD result = WNetAddConnection3(NULL, &netResource, &connectInfo);
    if (result == NO_ERROR)
    {
        // 连接成功,可以进行相关操作
    }
    else
    {
        // 连接失败,处理错误
    }

    return 0;
}

这样,操作系统会保存你提供的凭据,并且在下次连接时自动使用保存的凭据。请注意,在使用WNetAddConnection3函数时,需要先调用WNetAddConnection2函数,建立连接后再调用WNetAddConnection3函数保存凭据。另外,需要注意保护好代码中的用户名和密码信息,以防泄露。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券