文件夹共享

最近工作中遇到关于Access数据库同步的问题,需要使本机的Access副本所在文件夹共享,方便服务器来同步数据。这就需要在安装的时候使文件夹成为共享文件夹,不能让客户自己来设置吧!

用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;
}

你可能感兴趣的:(.net,工作,Security,Access,vc++)