windows all version - 实现指定路径共享
调用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 - 实现指定路径共享的更多相关文章
- windows上python上传下载文件到linux服务器指定路径【转】
从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...
- Windows 定时删除指定路径下N天前的日志文件
Windows 定时删除指定路径下N天前的日志文件 Windows 下bat脚本文件的内容为 1. 删除指定路径下5天前的所有文件 @echo off set SrcDir=E:\WORK\Git s ...
- 在java程序中访问windows有用户名和密码保护的共享目录
在java程序中访问windows有用户名和密码保护的共享目录 Posted on 2015-11-20 14:03 云自无心水自闲 阅读(3744) 评论(0) 编辑 收藏 --> Jav ...
- mysql 开发进阶篇系列 30 数据库二进制包(安装指定路径,目录介绍)
一. 指定路径 在上一篇里,二进制包解压后,全部放入在/usr/local/mysql目录下,在安装时指定了基础目录和数据目录, --basedir=/usr/local/mysql --datadi ...
- java监控指定路径下文件及文件夹变化
之前用jdk7的WatchService API(java.nio.file包)来做目录下的子文件监控,后改为使用commons-io包.主要有下面几点不同:1. WatchService是采用扫描式 ...
- 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...
- 将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小)
原文:将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小) WPF的XAML文档(Main.xaml): <Window x:Class="SVG2Image.Ma ...
- Windows系统中CreateFileMapping实现的共享内存及用法
在32位的Windows系统中,每一个进程都有权访问他自己的4GB(232=4294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模 ...
- 初识TypeScript:查找指定路径下的文件按类型生成json
如果开发过node.js的话应该对js(javascript)非常熟悉,TypeScript(以下简称ts)是js的超集. 下面是ts的官网: https://www.tslang.cn/ 1.环境配 ...
随机推荐
- 扫地雷II
感谢格致杭业晟同学改进完善 uses crt;var i,j,k,ls,x,y:byte; b:array[0..11,0..11] of shortint; f:array[0..11,0.. ...
- 关于MOD
同余式:正整数a,b对p取模,它们的余数相同,(a % p)=(b % p) 记做 或者a ≡ b (mod p). 运算规则 模运算与基本四则运算有些相似,但是除法例外.其规则如下: ...
- git学习系列--六分之一
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,可以对任何类型的文件进行版本控制. 细说分布式版本控制系统 在这类系统中,像 Git,Mercurial,Bazaar 以 ...
- 自动化测试selenium+java 环境搭建
1.开发环境: a:安装jdk,配置java的环境变量 b:安装eclipse 工具.火狐浏览器(低版本) 2.下载selenium包 selenium-java-2.44.0.jar seleniu ...
- leetcode 125
125. Valid Palindrome Given a string, determine if it is a palindrome, considering only alphanumeric ...
- ORACLE SQL前端补0的三种方式。
前端补0的三种方式. select lpad(sal,8,'0') from emp;select to_char(sal,'00000000') from emp;select substr('00 ...
- java中Thread的 interrupt异常处理
http://blog.csdn.net/srzhz/article/details/6804756
- Linux网络常用指令
5.1 网络参数设定使用的指令 ifconfig 查询 设定网络卡与 IP 网域等相关参数: ifup, ifdown 这两个档案是 script,透过更简单的方式来启动网络接口: route 查 ...
- webForm练习1(地区导航)
使用LINQ TO SQL类连接数据库. create database mydb go use mydb go CREATE TABLE [dbo].[ChinaStates] ( ) COLLAT ...
- css绘制特殊图形基础
1.等腰三角形 .isosceles{ width:; height:; border:30px solid; border-left-color: transparent; border-right ...