程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#實現網絡共享

C#實現網絡共享

編輯: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.2cto.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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved