我寫的共享管理類----方便創建,刪除,和查看本機共享!

/*------------------------------------
Author:   Ted--Nefarian Zhu
Date:     2011/04/20 03:30
Version:  V1.00 All rights reserved !
Life sucks,but we all have to move on!
------------------------------------*/
#ifndef CSHARE_H_H
#define CSHARE_H_H
#include <windows.h>
#include <lm.h>
#pragma comment(lib, "netapi32.lib")

class CShare
{
public:
    CShare();
    ~CShare();
    int AddShare(WCHAR* pwShareName, WCHAR* pwSharePath);
    int DelShare(WCHAR* pwShareName);
    int CheckShare(char buff[], int size);          
};


CShare::CShare(){}

CShare::~CShare(){}

int CShare::AddShare(WCHAR* pwShareName, WCHAR* pwSharePath)
{
    SHARE_INFO_502   si502;   
    NET_API_STATUS   nas;   

    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,                    //   share is on local machine   
                502,                    //   info-level   
                (LPBYTE)&si502,        //   info-buffer   
                NULL                  //   don't bother with parm   
                );     

    return  nas;
}

int CShare::DelShare(WCHAR* pwShareName)
{
    NET_API_STATUS   res; 
    res = NetShareDel(NULL, (LPSTR)pwShareName, 0);
    return res;
}

int CShare::CheckShare(char buff[], int size)
{
    memset(buff, 0, size);
    PSHARE_INFO_502   BufPtr, p; 
    NET_API_STATUS   res; 
    DWORD   er=0, tr=0, resume=0; 
    
    do 
    { 
        res = NetShareEnum(0, 502, (LPBYTE*)&BufPtr, 512, &er, &tr, &resume);  
        if(res == ERROR_SUCCESS || res == ERROR_MORE_DATA) 
        { 
            p = BufPtr; 
            char szChar[128] = ""; 
            
            for(int i=1; i<=er; i++) 
            { 
                wsprintf(szChar, "%S\t", p->shi502_netname);
                strcat(buff, szChar);
                wsprintf(szChar, "%S\n", p->shi502_path);
                strcat(buff, szChar);				 
                p++; 
            } 
            
            NetApiBufferFree(BufPtr);
        } 
        else   
            return res; 
    } 
    while (res==ERROR_MORE_DATA);  
    
    return 0;
}


#endif         /*-----CHARE_H_H-----*/


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值