public class ShareFolder
{
private static readonly Dictionary<uint, string> ReturnDetails = new Dictionary<uint, string>(); /// <summary>
/// Success (0)
/// Access denied (2)
/// Unknown failure (8)
/// Invalid name (9)
/// Invalid level (10)
/// Invalid parameter (21)
/// Duplicate share (22)
/// Redirected path (23)
/// Unknown device or directory (24)
/// Net name not found (25)
/// Other (26–4294967295)
/// </summary>
static ShareFolder()
{
ReturnDetails.Add(, "Success");
ReturnDetails.Add(, "Access denied");
ReturnDetails.Add(, "Unknown failure");
ReturnDetails.Add(, "Invalid name");
ReturnDetails.Add(, "Invalid level");
ReturnDetails.Add(, "Invalid parameter");
ReturnDetails.Add(, "Duplicate share");
ReturnDetails.Add(, "Redirected path");
ReturnDetails.Add(, "Unknown device or directory");
ReturnDetails.Add(, "Net name not found");
} /// <summary>
/// 设置文件夹共享
/// </summary>
/// <param name="folderPath">文件夹路径</param>
/// <param name="shareName">共享名</param>
/// <param name="description">共享注释</param>
/// <returns></returns>
public static void Share(string folderPath, string shareName, string description)
{
var directoryInfo = new DirectoryInfo(folderPath);
DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
directorySecurity.AddAccessRule(new FileSystemAccessRule("everyone", FileSystemRights.FullControl,
InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));
directoryInfo.SetAccessControl(directorySecurity); var managementClass = new ManagementClass("Win32_Share");
// Create ManagementBaseObjects for in and out parameters
ManagementBaseObject inParams = managementClass.GetMethodParameters("Create");
ManagementBaseObject outParams;
// Set the input parameters
inParams["Description"] = description;
inParams["Name"] = shareName;
inParams["Path"] = folderPath;
inParams["Type"] = ; // Disk Drive
inParams["MaximumAllowed"] = null;
inParams["Password"] = null;
inParams["Access"] = null; // Make Everyone has full control access.
outParams = managementClass.InvokeMethod("Create", inParams, null);
// Check to see if the method invocation was successful
uint result = (uint)(outParams.Properties["ReturnValue"].Value); if (result != )
{
if (ReturnDetails.ContainsKey(result))
{
throw new Exception(ReturnDetails[result]);
}
else
{
throw new Exception("failed to create share folder");
}
}
}
}

//测试

   class Program
{
static void Main(string[] args)
{
string folderPath = @"C:\SML\ShareFolder7"; //创建文件夹
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
} ShareFolder.Share(folderPath, "共享文件7", "共享注释"); }
}

ManagementClass("Win32_Share")之共享目录的更多相关文章

  1. samba共享目录

    samba 原理:在linux机器上共享一个目录出来,让windows通过网上邻居去访问 (i)共享一个不需要输入用户名和密码就能访问的目录(可读不可写) 一.打开配置文件: vim /etc/sam ...

  2. 关于nfs共享目录的使用技巧

    nfs客户端的使用 1.查看nfs服务器信息挂载信息 1)在客户端,要查看nfs服务器上有哪些共享目录 # showmount -e nfs服务器ip 在客户端,要查看nfs服务器上有哪些客户端的目录 ...

  3. Linux主机共享目录给Windows主机的方法

    Linux主机共享目录可以通过samba来实现 首先,来看下百科上关于samba的介绍: Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Ser ...

  4. 客户端挂载NFS服务器中的共享目录(用户后台上传图片与前台上传图片放在同一个服务器上)

    服务器端使用showmount命令查询NFS的共享状态 # showmount -e //默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错 # showmount -a //显示已经与客 ...

  5. virtualBox下面安装linux系统如何共享目录

    背景: 系统是win+virtualBox 在虚拟机中安装了linuxMint系统. 如何共享目录呢 第一步: 在虚拟机中安装增强功能 2,在virtualBox中设置共享目录 3,在linux下创建 ...

  6. linux查看访问windows共享目录NT_STATUS_DUPLICATE_NAME问题解决

    linux查看访问windows共享目录NT_STATUS_DUPLICATE_NAME问题解决 [jason@superfreak ~]$ smbclient //powerhouse-smb.my ...

  7. ubuntu 挂载windows共享目录的方法

    建立windows共享目录 右击要共享的文件夹-->属性-->高级共享-->添加用户-->添加完全控制权限 假设建立的共享地址为\\192.168.1.100\Linux 获取 ...

  8. vmtool安装成功,但是hgfs下没有被挂接共享目录!

    vmtool安装成功,但是hgfs下没有被挂接共享目录! 2013-01-04 16:05:18|  分类: Linux|字号 订阅     1.使用vmtool 提供的命令——vmware-hgfs ...

  9. 【转载】ubuntu和debian环境下无法挂载vmware虚拟机共享目录的解决办法

    转载自:http://www.fengfly.com/plus/view-210022-1.html 第一步,安装VMware Tools 打开虚拟机ubuntu(debian原理一样)后,首先,点击 ...

随机推荐

  1. mfc和qt的区别

    注:引用来源 http://wenda.chinabaike.com/b/30934/2013/1208/707410.html QT使用的编译器是MinGW,即Linux下的GCC移植到window ...

  2. Go语言的接口与反射

    美女图片没啥用,就是为了好看 本文还在完善中... go总体而言是一门比较好入门的语言,许多特性都很精简易懂,但是接口与反射除外.他们真的让人头疼,不知道是自身资质问题还是怎么着,总是觉得很多书上写的 ...

  3. python 正则表达式 符号及其定义

    较好的文章https://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

  4. python 的 购物小程序

    money = input('请输入您的工资:') shop = [("iphone",5800),("ipod",3000),("book" ...

  5. Chrome浏览器保存微信公众号文章中的图片

    用chrome浏览器打开微信公众号文章中时,另存为图片时保存的是640.webp,不是图片本身,用IE则没有此问题.大部分chrome插件也无法保存图片. 经过多番尝试,找到一款插件可以批量保存微信公 ...

  6. Spark入门(Python版)

    Hadoop是对大数据集进行分布式计算的标准工具,这也是为什么当你穿过机场时能看到”大数据(Big Data)”广告的原因.它已经成为大数据的操作系统,提供了包括工具和技巧在内的丰富生态系统,允许使用 ...

  7. Python:numpy中的tile函数

    在学习机器学习实教程时,实现KNN算法的代码中用到了numpy的tile函数,因此对该函数进行了一番学习: tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复 ...

  8. JDBC事务机制

    package com.jdbc.test; import java.sql.*; /** * 数据库的引擎必须是innodb */ public class Demo02 { PreparedSta ...

  9. SpringBoot学习:整合shiro(rememberMe记住我后自动登录session失效解决办法)

    项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 定义一个拦截器,判断用户是通过记住我登录时,查询数据库后台自动登录,同时把用户放入ses ...

  10. Docker - 常用命令集

    启动容器 docker run -d -p 58080:8080 -p 58000:8000 --name mytomcat1.0 -v /root/webapps/:/opt/apache-tomc ...