调用API函数NetShareAdd()将文件夹设置为共享,调用此函数后如果不做其他设置,网络用户是无法访问共享文件夹的,因为此文件夹在NTFS分区中,同时受到NTFS文件系统的访问控制,因此还需要第2步;
调用DOS命令cacls,赋予Guest用户组读写权限;
如果要取消文件共享,直接调用API函数NetShareDel()

对于FAT32分区中文件夹,cacls命令是不起作用的,这个命令专用于NTFS格式下的文件和文件夹。也就是说上面这种解决方法的第步不能用了,那么现在只能使用NetShareAdd()函数添加文件共享。调用此函数后如果不做其他设置,网络用户可以访问共享文件夹,但拥有完全控制权限(这是默认的共享权限设置),而在实际项目中我们希望能够编程控制读写权限。在NTFS分区中,我们还有NTFS文件系统的访问控制功能罩着,在FAT32分区中就只能依赖于操作系统文件夹共享自身的权限设置功能了。

1NET_API_STATUS NetShareAdd(
2_In_ LPWSTR servername,
3_In_ DWORD level,
4_In_ LPBYTE buf,
5_Out_ LPDWORD parm_err
);
7typedef struct _SHARE_INFO_2 {
8LPWSTR shi2_netname;
9DWORD shi2_type;
10LPWSTR shi2_remark;
11DWORD shi2_permissions;
12DWORD shi2_max_uses;
13DWORD shi2_current_uses;
14LPWSTR shi2_path;
15LPWSTR shi2_passwd;
} SHARE_INFO_2, *PSHARE_INFO_2, *LPSHARE_INFO_2;

addShare.cpp

 // 说明:
// FAT 系统调用此函数,shi502_permissions参数无效。有且仅有共享权限为最高权限。
// NTFS 系统调用此函数,请修改shi502_permissions参数,可使用如下权限:
// ACCESS_READ, ACCESS_WRITE, ACCESS_CREATE, ACCESS_EXEC
// ACCESS_DELETE, ACCESS_ATRIB, ACCESS_PERM, ACCESS_ALL
BOOL addShare(LPTSTR lpShareName, LPTSTR lpShareDir)
{
NET_API_STATUS res;
SHARE_INFO_502 p; p.shi502_netname = lpShareName; //共享名
p.shi502_type = STYPE_DISKTREE;
p.shi502_remark = NULL;
p.shi502_permissions = ACCESS_ALL;
p.shi502_max_uses = SHI_USES_UNLIMITED; //最大链接数
p.shi502_current_uses = ;
p.shi502_path = lpShareDir; //需要共享的路径
p.shi502_passwd = NULL;
p.shi502_reserved = ;
p.shi502_security_descriptor = NULL; res = NetShareAdd(NULL, , (LPBYTE)&p, NULL); if (NERR_Success == res)
{
printf("Share created.\n");
}
else
{
printf("NetShareAdd error: %u\n", res);
}
return (res==NERR_Success);
}

delShare.cpp

 BOOL delShare(LPTSTR lpShareName)
{
NET_API_STATUS res; res = NetShareDel(NULL, (LMSTR)lpShareName, );
if (NERR_Success == res)
{
printf("NetShareDel ok.\n");
}
else
{
printf("NetShareDel error: %u\n", res);
if (ERROR_ACCESS_DENIED == res)
{
printf("The user does not have access to the requested information.\n");
}
if (NERR_NetNameNotFound == res)
{
printf("The share name does not exist.\n");
}
}
return (res==NERR_Success);
}

windows all version - 实现指定路径共享的更多相关文章

  1. windows上python上传下载文件到linux服务器指定路径【转】

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  2. Windows 定时删除指定路径下N天前的日志文件

    Windows 定时删除指定路径下N天前的日志文件 Windows 下bat脚本文件的内容为 1. 删除指定路径下5天前的所有文件 @echo off set SrcDir=E:\WORK\Git s ...

  3. 在java程序中访问windows有用户名和密码保护的共享目录

    在java程序中访问windows有用户名和密码保护的共享目录 Posted on 2015-11-20 14:03 云自无心水自闲 阅读(3744) 评论(0)  编辑  收藏 --> Jav ...

  4. mysql 开发进阶篇系列 30 数据库二进制包(安装指定路径,目录介绍)

    一. 指定路径 在上一篇里,二进制包解压后,全部放入在/usr/local/mysql目录下,在安装时指定了基础目录和数据目录, --basedir=/usr/local/mysql --datadi ...

  5. java监控指定路径下文件及文件夹变化

    之前用jdk7的WatchService API(java.nio.file包)来做目录下的子文件监控,后改为使用commons-io包.主要有下面几点不同:1. WatchService是采用扫描式 ...

  6. 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...

  7. 将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小)

    原文:将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小) WPF的XAML文档(Main.xaml): <Window x:Class="SVG2Image.Ma ...

  8. Windows系统中CreateFileMapping实现的共享内存及用法

    在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模 ...

  9. 初识TypeScript:查找指定路径下的文件按类型生成json

    如果开发过node.js的话应该对js(javascript)非常熟悉,TypeScript(以下简称ts)是js的超集. 下面是ts的官网: https://www.tslang.cn/ 1.环境配 ...

随机推荐

  1. TextView与Html相结合的具体方法?

    TextView与Html相结合的具体方法? android教程之textview解析带图片的html示例 Android中的TextView,本身就支持部分的Html格式标签.这其中包括常用的字体大 ...

  2. Codeforces 721D [贪心]

    /* 不要低头,不要放弃,不要气馁,不要慌张. 题意: 给一列数a,可以进行k次操作,每次操作可以选取任意一个数加x或者减x,x是固定的数.求如何才能使得这个数列所有数乘积最小. 思路: 贪心...讨 ...

  3. day5_常用模块

    本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configpars ...

  4. DataGridView控件的各种操作总结

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...

  5. Karma: 3 - 测试覆盖率

    karma 的插件 karma-coverage 提供了测试代码覆盖率的支持. karma 的页面:http://karma-runner.github.io/0.8/config/coverage. ...

  6. 不让Win7休眠的设置

    1:原因 目前有一个项目是采用微服务的架构搭建的,其中一个微服务的数据库是在一位同事的电脑上(Win7系统),一旦这台电脑休眠,对应的数据库服务就访问不了,所以,需要保持此台电脑永不休眠. 2:傻瓜式 ...

  7. 【MySQL】MySQL 5.7 sys Schema

    sys库说明:http://dev.mysql.com/doc/refman/5.7/en/sys-schema-usage.html sys库使用说明:http://dev.mysql.com/do ...

  8. PacketiX VPN搭建企业VPN

    参考资料:http://jingyan.baidu.com/article/9989c746043c44f649ecfe69.html

  9. Python之路【第十七篇】:Django【进阶篇 】

    Python之路[第十七篇]:Django[进阶篇 ]   Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...

  10. javascript 原型详解

    引:http://www.cnblogs.com/wangfupeng1988/p/3978131.html 1.什么是javascript原型 每一个函数都有prototype属性(默认生成的)和原 ...