如何通过编程(Win32 API)共享目录?

steel 2000-02-18 04:15:00
as title.
...全文
328 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fli 2000-06-22
  • 打赏
  • 举报
回复
最后可以用吗?
我怎的还是不行,那个SHARE_INFO_50在哪里定义的,一编译就说没有定义,在MSDN中也没有呀?
WNetAddConnection能用于共享操作?
fli 2000-06-22
  • 打赏
  • 举报
回复
sorry!没注意那个头文件。
//shy
Dann 2000-02-19
  • 打赏
  • 举报
回复
Use the following code to do this:

#include <svrapi.h>

typedef NET_API_STATUS ( *PFNETSHAREADD) ( const char*, short, const char*, unsigned short);

// ...
HANDLE hDll;
PFNETSHAREADD _NetShareAdd;
NET_API_STATUS naStat;
char acSharePath [MAX_PATH];
share_info_50 shi50;
char acNetName [ LM20_NNLEN + 1] = "MyShare";

hDll = LoadLibrary ("svrapi.dll");

if ( INVALID_HANDLE_VALUE == hDll)
{
return ( ERROR_MOD_NOT_FOUND);
}

_NetShareAdd = ( PFNETSHAREADD)GetProcAddress( ( HINSTANCE )hDll, "NetShareAdd" );

if ( !_NetShareAdd)
{
FreeLibrary ( ( HINSTANCE) hDll);
return ( ERROR_PROC_NOT_FOUND);
}
lstrcpy ( acSharePath, "c:\\mydir\\myshare");
CreateDirectory ( acSharePath, NULL);
ZeroMemory ( &shi50, sizeof ( share_info_50));
lstrcpy ( shi50.shi50_netname, acNetName);

// make share path UPPERCASE!!!
pc = acSharePath;
while ( *pc++ = toupper ( *pc));

shi50.shi50_type = STYPE_DISKTREE;
shi50.shi50_remark = "MyShare";
shi50.shi50_flags = SHI50F_RDONLY and SHI50F_PERSIST;
shi50.shi50_path = acSharePath;

naStat = _NetShareAdd ( NULL,
50,
( const char*) &shi50,
sizeof ( share_info_50)
);

FreeLibrary ( ( HINSTANCE) hDll);

if ( NERR_Success != naStat)
return ( naStat);

Dann 2000-02-19
  • 打赏
  • 举报
回复
SHARE_INFO_501
Lin 2000-02-19
  • 打赏
  • 举报
回复
WNetAddConnection()适用于Win9x和Win NT
NetShareAdd()局限于NT
Dann 2000-02-19
  • 打赏
  • 举报
回复
NetShareAdd()的第2个和第3个参数有两种结构可以选择,SHARE_INFO_2和SHARE_INFO_502,但两种结构用于程序中时,都会产生如steel所说的错误,其实还有一种结构,但我现在一时想不起来,曾经写过的程序也找不到了。
steel 2000-02-19
  • 打赏
  • 举报
回复
根据MSDN的说明,WNetAddConnection()用于连接共享资源,NetShareAdd()用于创建共享资源(如目录)。并且文档中明确指出两者都可用于NT和Win9x。
但我在测试时(在 win98 SE,VC6.0 环境下)发现 NetShareAdd 总是返回错误 ERROR_INVALID_PARAMETER,而且其第三个参数 parm_err 并未返回有效的错误信息。
附Code如下,请各位高手点拨。

#include "stdafx.h"
#include "string.h"
#include "windows.h"
#include "lmcons.h"
#include "lmshare.h"
#include "stdio.h"


int main(int argc, char* argv[])
{
char szSharePath[256];
char szSharePassword[10];
char szShareRemark[32];
char szShareNetname[32];

DWORD param_err,result;
SHARE_INFO_2 shareMyDir;


strcpy(szSharePath,"E:\\Dict");
strcpy(szSharePassword,"112233");
strcpy(szShareRemark,"Note book's sharing.");
strcpy(szShareNetname,"MyShare");

shareMyDir.shi2_type = STYPE_DISKTREE;
shareMyDir.shi2_permissions = PERM_FILE_READ;
shareMyDir.shi2_max_uses = -1;
shareMyDir.shi2_path = szSharePath;
shareMyDir.shi2_passwd = szSharePassword;
shareMyDir.shi2_netname = szShareNetname;
shareMyDir.shi2_remark = szShareRemark;


result = NetShareAdd(NULL,2,(LPBYTE)&shareMyDir,¶m_err);

printf("shareing result = %d\n",result);
printf("index = %d\n",param_err);

return 0;
}
Dann 2000-02-19
  • 打赏
  • 举报
回复
WNetAddConnection()
or
NetShareAdd()
sintony 2000-02-18
  • 打赏
  • 举报
回复
Windows98的目录共享好像可以通过改注册表实现,但具体我也不太清楚。
土豆 2000-02-18
  • 打赏
  • 举报
回复
关注
WHQ 2000-02-18
  • 打赏
  • 举报
回复
NetShareAdd
xenogear 2000-02-18
  • 打赏
  • 举报
回复
看msdn中platform sdk中关于wnet的介绍
Wingsun 2000-02-18
  • 打赏
  • 举报
回复
在WindowsNT下可以做到,但是在windows 9x小不知道有什么方法。

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧