65.9K
CodeProject 正在变化。 阅读更多。
Home

以编程方式创建网络共享

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.97/5 (12投票s)

2007年5月21日

2分钟阅读

viewsIcon

46465

downloadIcon

1042

我使用 Windows API 创建网络资源的共享。

引言

本文展示了如何使用 Windows API 创建网络资源的共享。代码片段首先检查所有系统驱动器,如果找到已映射的网络驱动器,程序将直接返回。否则,它将使用传递给可执行文件的命令行参数创建网络共享。这只是为了演示如何以编程方式创建映射驱动器。

使用代码

使用 vs2003 编译并下载代码,然后通过提供命令行参数运行可执行文件。我使用了命令行参数来使程序更通用,以便用户可以根据需要简单地提供参数。请按照以下方式检查命令行参数的使用:

map_drive [用户名, 密码, 本地驱动器, 远程驱动器]

其中,用户名和密码是远程系统的登录凭据。

本地驱动器可以是任何驱动器字母,只要它不是本地系统上使用的驱动器字母,例如 Q:、P: 等。

远程驱动器基本上是要映射到本地驱动器的共享路径,应按以下方式提供:

\\ <远程系统名称> \ <远程目录或驱动器>。

假设远程系统名称是 admin,共享目录是 songs,那么远程驱动器参数的格式可以是:

\\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 * 的其他方法,请在反馈中告诉我。

历史

这只是一个首次发布版本。

© . All rights reserved.