您的位置:首页 > 理论基础 > 计算机网络

C#实现网络共享

2012-06-20 16:42 211 查看
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),
}

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;
}
}
}




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: