最近工作中遇到关于Access数据库同步的问题,需要使本机的Access副本所在文件夹共享,方便服务器来同步数据。这就需要在安装的时候使文件夹成为共享文件夹,不能让客户自己来设置吧!
用VC中的NetShareAdd函数可以实现使文件夹共享,函数原型如下:
不过要在VC工程->设置->连接中的对象/库模块中将netapi32.dll加入,代码如下
用VC中的NetShareAdd函数可以实现使文件夹共享,函数原型如下:
NET_API_STATUS NetShareAdd(
LPWSTR servername, //字符串参数采用unicode编码
DWORD level,
LPBYTE buf,
LPDWORD parm_err
);
不过要在VC工程->设置->连接中的对象/库模块中将netapi32.dll加入,代码如下
#include <atlconv.h> //转换unicode 时要用到宏的头文件
#include <lm.h>
#pragma comment(lib, "Netapi32.lib") // 加载Netapi32.lib库
void main()
{
ShareFolder("d:\test","ldj");
}
void ShareFolder(char * pShareName,char * pSharePath)
{
USES_CONVERSION;
SHARE_INFO_502 si502;
NET_API_STATUS nas;
LPWSTR pwShareName=A2W(pShareName); //转换成unicode 字符串
LPWSTR pwSharePath=A2W(pSharePath);
si502.shi502_netname = (LPTSTR)pwShareName;
si502.shi502_type = STYPE_DISKTREE;
si502.shi502_remark = NULL;
si502.shi502_permissions = 0;
si502.shi502_max_uses = SHI_USES_UNLIMITED;
si502.shi502_current_uses = 0;
si502.shi502_path = (LPTSTR)pwSharePath;
si502.shi502_passwd = NULL;
si502.shi502_reserved = 0;
si502.shi502_security_descriptor = NULL
nas = NetShareAdd(
NULL, //Null表示本机
502, // info-level
(LPBYTE)&si502, // info-buffer
NULL // Null表示遇到错不返回
);
return;
}