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. python3网络爬虫系统学习:第二讲 基本库requests(一)

    之前,我们学习了基本库urllib的相关用法,但是在网页验证.Cookies处理等方面是比较繁琐的,需要用到Handler并且还需自己构建Opener.requests库的出现很好的解决了这个问题,下 ...

  2. Go中处理文本格式

    首先是xml 解析xml package main import ( "encoding/xml" //xml标准库 "fmt" "io/ioutil ...

  3. Go语言中的流程控制

    1 概述 Go语言提供了条件分支 if,状态分支 switch,循环 for,跳转 goto,延迟执行 defer,这些流程控制语句.分别作说明如下: 2 条件分支 if 依据条件是否满足确定执行哪个 ...

  4. vs2013工程配置

    1. 目标文件生成路径配置: 直接改在工程同级目录下 x64\debug目录下: 2. 调试工程路径配置: 命令-----参照物为工程 工作目录----参照物为运行程序 3.  拷贝工程: bat的写 ...

  5. unity share current game screen

    using UnityEngine; using System.Collections; using UnityEngine.UI; using System.IO; public class Tak ...

  6. webpack中Development和Production模式的区分打包

    当我们在开发一个项目的时候,我们一般用development这个环境进行项目的开发,在这个环境下,webpack使用dev-server,帮我们启用一个服务器,然后这个服务器里面还集成了一些,比如hm ...

  7. Git笔记——01

    Git - 幕布 Git   教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b00 ...

  8. uvaoj 101 - The Blocks Problem(vector应用+技巧)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=835&page= ...

  9. python里pickle模块

    Pickle模块用于将复杂的文件转化为二进制的文件 pickle模块一般是在源代码里面含有较大的字典或者列表等复杂文件时,我们如果将文件直接写在源代码里面,这样会使得代码很冗余,并且源代码文件所占空间 ...

  10. SpriteKit手机游戏摇杆JoyStick的使用 -- by iFIERO游戏开发教程

    ### 工欲善其事,必先利其器 有时候学习如何应用第三方库是非常重要的,因为我们不用再自己重复造轮子,在这里,我们就把原先利用重力感应来操控飞机改为用游戏摇杆joystick来操控,具体的操作如下:` ...