急,急,急,怎么使用NetShareAdd函数在Windows98下共享一个目录

wuxfBrave 2000-08-28 09:15:00
加精
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
beegee 2001-07-12
  • 打赏
  • 举报
回复
!
sunx 2000-08-28
  • 打赏
  • 举报
回复
代码如下, :P

#include <stdio.h>
#include <windows.h>
#include <svrapi.h>

int main(int argc, char FAR * argv[])
{
short nLevel = 50;
struct share_info_50* pBuf = NULL;
unsigned short cbBuffer;
NET_API_STATUS nStatus;

if (argc != 3)
{
printf("Usage: %s ShareName SharePath\n", argv[0]);
exit(1);
}

cbBuffer = sizeof(struct share_info_50);
pBuf = malloc(cbBuffer);

if (pBuf == NULL)
printf("No memory\n");

strcpy(pBuf->shi50_netname, argv[1]);
pBuf->shi50_type = STYPE_DISKTREE;
pBuf->shi50_flags = SHI50F_FULL;
pBuf->shi50_remark = NULL;
pBuf->shi50_path = argv[2];
pBuf->shi50_rw_password[0] = '\0'; // No password
pBuf->shi50_ro_password[0] = '\0'; // No password

nStatus = NetShareAdd(NULL,
nLevel,
(char FAR *)pBuf,
cbBuffer);

if (pBuf != NULL)
free(pBuf);

return 0;
}
U皮特U 2000-08-28
  • 打赏
  • 举报
回复
在win95,98机器上必须用leverl 50,也就是使用share_info_50结构。以下是详细说明,后附VC的源码,我已经调试通过。
struct share_info_50 {
char shi50_netname[LM20_NNLEN+1]; /* 共享名 */
unsigned char shi50_type; /* see below */
unsigned short shi50_flags; /* see below */
char FAR * shi50_remark; /* 共享描述 */
char FAR * shi50_path; /* 共享资源,必须大写 */
char shi50_rw_password[SHPWLEN+1]; /* 读写口令 */
char shi50_ro_password[SHPWLEN+1]; /* 只读口令 */
};

shi50_type的值:
#define STYPE_DISKTREE 0 /* 磁盘共享*/
#define STYPE_PRINTQ 1/* 打印机共享 */
#define STYPE_DEVICE 2
#define STYPE_IPC 3

shi50_flags的值:
#define SHI50F_RDONLY 0x0001
#define SHI50F_FULL 0x0002
#define SHI50F_DEPENDSON (SHI50F_RDONLY|SHI50F_FULL)
#define SHI50F_ACCESSMASK (SHI50F_RDONLY|SHI50F_FULL)
#define SHI50F_PERSIST 0x0100 /* 系统重启时重新建立该共享资源 */
#define SHI50F_SYSTEM 0x0200

以下是VC的源码:
#include <svrapi.h>
CString strNetName = "tmp";
CString strPasswdRW = "ddd";
CString strPasswdRO = "ddd";
CString strPath = "C:\\TMP"; // 一定要大写,否则出错NERR_UnknownDevDir
CString strRemark = "my tmp";

NET_API_STATUS nas;
share_info_50 si5;
si5.shi50_type = STYPE_DISKTREE;
si5.shi50_flags = SHI50F_FULL;
si5.shi50_path = (char*)LPCTSTR(strPath);
si5.shi50_remark = (char*)LPCTSTR(strRemark);
memset((void*)si5.shi50_netname, 0, SHPWLEN+1);
strncpy((char*)si5.shi50_netname, LPCTSTR(strNetName), strNetName.GetLength());
memset((void*)si5.shi50_rw_password, 0, SHPWLEN+1);
strncpy((char*)si5.shi50_rw_password, LPCTSTR(strPasswdRW), strPasswdRW.GetLength());
memset((void*)si5.shi50_ro_password, 0, SHPWLEN+1);
strncpy((char*)si5.shi50_ro_password, LPCTSTR(strPasswdRO), strPasswdRO.GetLength());

nas = NetShareAdd(NULL, 50, (char *)&si5, sizeof(share_info_50));
Kevin_qing 2000-08-28
  • 打赏
  • 举报
回复
关注哦

16,470

社区成员

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

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

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