当前位置:编程学习 > C#/ASP.NET >>

C#实现网络共享

[csharp] 
<pre name="code" class="csharp">using System; 
using System.Runtime.InteropServices; 
 
namespace ConApp 

    class RemoteShareDir 
    { 
        [DllImport("Netapi32.dll",CharSet=CharSet.Unicode)] 
        private static extern uint NetShareAdd( 
            [MarshalAs(UnmanagedType.LPWStr)] string strServer, 
            Int32 dwLevel, 
            ref SHARE_INFO_502 buf, 
            out uint parm_err 
        ); 
 
        [DllImport("Netapi32.dll",CharSet= CharSet.Unicode )] 
        private static extern uint NetShareDel(string host, string shareName, int reserved); 
 
        public RemoteShareDir() 
        { 
 
        } 
 
 
        public uint SetShareDir(string host, string dir, 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;    // ignored for user-level security 
            info.shi502_max_uses = -1; 
            info.shi502_current_uses = 0;    // ignored for set 
            info.shi502_path = dir; 
            info.shi502_passwd = null;        // ignored for user-level security 
            info.shi502_reserved = 0; 
            info.shi502_security_descriptor = IntPtr.Zero; 
            uint error = 0; 
            return NetShareAdd(host, 502, ref info, out error); 
        } 
 
        public uint DeleteShareDir(string host, string shareName) 
        { 
            return NetShareDel(host, shareName, 0); 
        } 
 
        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), 
        }   www.zzzyk.com
 
        private enum SHARE_TYPE : uint 
        { 
            STYPE_DISKTREE = 0, 
            STYPE_PRINTQ = 1, 
            STYPE_DEVICE = 2, 
            STYPE_IPC = 3, 
            STYPE_TEMPORARY = 0x40000000, 
            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; 
        } 
    } 

作者:wmingcsharp
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,