坚持,坚定,坚强

博客园 首页 新随笔 联系 订阅 管理

看到一段代码,谁写的忘了。请作者多多包含。

private enum NetError : uint
  {
   NERR_Success = 0,
   NERR_BASE = 2100,
   NERR_UnknownDevDir = (NERR_BASE + 16),
   NERR_DuplicateShare = (NERR_BASE + 18),
   NERR_BufTooSmall = (NERR_BASE + 23),
  }

  private enum SHARE_TYPE : uint
  {
   STYPE_DISKTREE = 0,
   STYPE_PRINTQ = 1,
   STYPE_DEVICE = 2,
   STYPE_IPC = 3,
   STYPE_SPECIAL = 0x80000000,
  }

  [StructLayout(LayoutKind.Sequential)]
  private struct SHARE_INFO_502
  {
   [MarshalAs(UnmanagedType.LPWStr)] public string shi502_netname;
   public SHARE_TYPE shi502_type;
   [MarshalAs(UnmanagedType.LPWStr)] public string shi502_remark;
   public Int32 shi502_permissions;
   public Int32 shi502_max_uses;
   public Int32 shi502_current_uses;
   [MarshalAs(UnmanagedType.LPWStr)] public string shi502_path;
   [MarshalAs(UnmanagedType.LPWStr)] public string shi502_passwd;
   public Int32 shi502_reserved;
   public IntPtr shi502_security_descriptor;
  }

  [DllImport("Netapi32.dll")]
  private static extern uint NetShareAdd(
   [MarshalAs(UnmanagedType.LPWStr)] string strServer,
   Int32 dwLevel,
   ref SHARE_INFO_502 buf,
   out uint parm_err);

  public uint SetDirectoryShare(string path, string shareName, string shareDesc)
  {
   SHARE_INFO_502 info = new SHARE_INFO_502();
   info.shi502_netname = shareName;
   info.shi502_type = SHARE_TYPE.STYPE_DISKTREE;
   info.shi502_remark = shareDesc;
   info.shi502_permissions = 0;   
   info.shi502_max_uses = -1;
   info.shi502_current_uses = 0;   
   info.shi502_path = path;
   info.shi502_passwd = null;       
   info.shi502_reserved = 0;
   info.shi502_security_descriptor = IntPtr.Zero;
   uint error = 0;
   return NetShareAdd(null, 502, ref info, out error);
  }

第二种方法
using System.IO;
using System.Management;

private void CreateDirtory()
  {
   try
   {
    // create a directory
    Directory.CreateDirectory(@"C:\Inetpub\wwwroot\Temp");
    // Create a ManagementClass object
    ManagementClass 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"] = "My Files Share";
    inParams["Name"] = "My Files Share";
    inParams["Path"] = @"C:\Inetpub\wwwroot\Temp";
    inParams["Type"] = 0x0; // Disk Drive
    // Invoke the method on the ManagementClass object
    outParams = managementClass.InvokeMethod("Create", inParams, null);
    // Check to see if the method invocation was successful
    if((uint)(outParams.Properties["ReturnValue"].Value) != 0)
    {
     throw new Exception("Unable to share directory.");
    }
   }
   catch(Exception e)
   {
    MessageBox.Show(e.Message.ToString());
   }
  }

posted on 2005-10-18 15:03  老公鸡  阅读(567)  评论(0)    收藏  举报