以编程方式创建网络共享






2.97/5 (12投票s)
2007年5月21日
2分钟阅读

46465

1042
我使用 Windows API 创建网络资源的共享。
引言
本文展示了如何使用 Windows API 创建网络资源的共享。代码片段首先检查所有系统驱动器,如果找到已映射的网络驱动器,程序将直接返回。否则,它将使用传递给可执行文件的命令行参数创建网络共享。这只是为了演示如何以编程方式创建映射驱动器。
使用代码
使用 vs2003 编译并下载代码,然后通过提供命令行参数运行可执行文件。我使用了命令行参数来使程序更通用,以便用户可以根据需要简单地提供参数。请按照以下方式检查命令行参数的使用:
map_drive [用户名, 密码, 本地驱动器, 远程驱动器]
其中,用户名和密码是远程系统的登录凭据。
本地驱动器可以是任何驱动器字母,只要它不是本地系统上使用的驱动器字母,例如 Q:、P: 等。
远程驱动器基本上是要映射到本地驱动器的共享路径,应按以下方式提供:
\\ <远程系统名称> \ <远程目录或驱动器>。
假设远程系统名称是 admin,共享目录是 songs,那么远程驱动器参数的格式可以是:
总而言之,可以使用以下命令以编程方式创建网络共享:
map_drive sysadmin pwd123 X: \\admin\songs。
以下代码展示了 Windows API 的使用,该 API 负责创建上述共享网络资源。
NETRESOURCE nr; DWORD res; TCHAR szUserName[MAXLEN]; TCHAR szPassword[MAXLEN]; TCHAR szLocalName[MAXLEN]; TCHAR szRemoteName[MAXLEN]; // Assign values to the NETRESOURCE structure. nr.dwType = RESOURCETYPE_ANY; nr.lpLocalName = szLocalName; nr.lpRemoteName = szRemoteName; nr.lpProvider = NULL; // // Call the WNetAddConnection2 function to assign // a drive letter to the share. res = WNetAddConnection2(&nr, szPassword, szUserName, FALSE);
关注点
我使用了一个转换函数,将 char * 转换为 TCHAR *。这基本上在 char* 上循环,然后将每个 char 转换为 TCHAR。目前这工作正常,但可能还有另一种更有效的方法来执行此操作...我不知道 :) 如果有人知道将 char * 转换为 TCHAR * 的其他方法,请在反馈中告诉我。
历史
这只是一个首次发布版本。