c# winform 程序怎么列出一台机器上面的共享目录? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先using System.Management;一下,然后ObjectQuery objectQuery = new ObjectQuery("select * from Win32_Share");//share object ManagementObjectSearcher searcher =new ManagementObjectSearcher(objectQuery);txtMsg.Text="";PropertyDataCollection pdc;foreach (ManagementObject share in searcher.Get()){pdc=share.Properties;txtMsg.Text+="======================================"+"\r\n";txtMsg.Text+=share.Path+"\r\n";foreach(PropertyData pd in pdc){txtMsg.Text+=pd.Name+"="+pd.Value+"\r\n";}} 终于知道怎么获取共享目录啦[StructLayout(LayoutKind.Sequential)] protected struct SHARE_INFO_1 { [MarshalAs(UnmanagedType.LPWStr)] public string shi1_netname; [MarshalAs(UnmanagedType.U4)] public uint shi1_type; [MarshalAs(UnmanagedType.LPWStr)] public string shi1_re; } //98没有这个函数?[DllImport("Netapi32.dll", EntryPoint="NetShareEnum")] protected static extern int NetShareEnum( [MarshalAs(UnmanagedType.LPWStr)] string servername, [MarshalAs(UnmanagedType.U4)] uint level, out IntPtr bufptr, [MarshalAs(UnmanagedType.U4)] int prefmaxlen, [MarshalAs(UnmanagedType.U4)] out uint entriesread, [MarshalAs(UnmanagedType.U4)] out uint totalentries, [MarshalAs(UnmanagedType.U4)] out uint resume_handle );private string[] NetShareEnum(string server){ IntPtr buffer; uint entriesread; uint totalentries; uint resume_handle;//-1应该是获取所有的share,msdn里面的例子是这么写的,返回0表示成功if(NetShareEnum(server,1,out buffer,-1,out entriesread,out totalentries,out resume_handle)==0){ Int32 ptr = buffer.ToInt32(); ArrayList alShare=new ArrayList(); for (int i=0; i<entriesread; i++) { SHARE_INFO_1 shareInfo = (SHARE_INFO_1)Marshal.PtrToStructure(new IntPtr(ptr), typeof(SHARE_INFO_1)); if(shareInfo.shi1_type==0)//Disk drive类型 { alShare.Add(shareInfo.shi1_netname); } ptr += Marshal.SizeOf(shareInfo);//有点类似C代码 } string[] share=new string[alShare.Count]; for(int i=0;i<alShare.Count;i++) { share[i]=alShare[i].ToString(); } return share;} else return null; } 字符串截取求助。。 菜鸟求帮助 关于C#中与或运算的问题 c# 中怎样把ListBox中的所有项循环提取出来赋给一个变量 请教一个文本快速格式化的问题 当前不会命中断点:求VS2008当前不会命中断点尚未加载指定模块? C# .Net ... 一夜之后,无意间发现竟然多穿了条"裤衩"呵呵.散分.顺便带个问题 编译错误 另贴《Visual C#.NET应用编程150例》电子书及源码 c#请教,查询数据填充指定文本框 使用Graphcis类时出现了问题 mschart的rowlable标签如何纵向显示
ObjectQuery objectQuery = new ObjectQuery("select * from Win32_Share");//share object ManagementObjectSearcher searcher =new ManagementObjectSearcher(objectQuery);
txtMsg.Text="";
PropertyDataCollection pdc;
foreach (ManagementObject share in searcher.Get())
{
pdc=share.Properties;
txtMsg.Text+="======================================"+"\r\n";
txtMsg.Text+=share.Path+"\r\n";
foreach(PropertyData pd in pdc)
{
txtMsg.Text+=pd.Name+"="+pd.Value+"\r\n";
}
}
protected struct SHARE_INFO_1
{
[MarshalAs(UnmanagedType.LPWStr)] public string shi1_netname;
[MarshalAs(UnmanagedType.U4)] public uint shi1_type;
[MarshalAs(UnmanagedType.LPWStr)] public string shi1_re;
} //98没有这个函数?
[DllImport("Netapi32.dll", EntryPoint="NetShareEnum")]
protected static extern int NetShareEnum(
[MarshalAs(UnmanagedType.LPWStr)] string servername,
[MarshalAs(UnmanagedType.U4)] uint level,
out IntPtr bufptr,
[MarshalAs(UnmanagedType.U4)] int prefmaxlen,
[MarshalAs(UnmanagedType.U4)] out uint entriesread,
[MarshalAs(UnmanagedType.U4)] out uint totalentries,
[MarshalAs(UnmanagedType.U4)] out uint resume_handle
);
private string[] NetShareEnum(string server)
{
IntPtr buffer;
uint entriesread;
uint totalentries;
uint resume_handle;//-1应该是获取所有的share,msdn里面的例子是这么写的,返回0表示成功
if(NetShareEnum(server,1,out buffer,-1,out entriesread,out totalentries,out resume_handle)==0)
{
Int32 ptr = buffer.ToInt32();
ArrayList alShare=new ArrayList();
for (int i=0; i<entriesread; i++)
{
SHARE_INFO_1 shareInfo = (SHARE_INFO_1)Marshal.PtrToStructure(new IntPtr(ptr), typeof(SHARE_INFO_1));
if(shareInfo.shi1_type==0)//Disk drive类型
{
alShare.Add(shareInfo.shi1_netname);
}
ptr += Marshal.SizeOf(shareInfo);//有点类似C代码
}
string[] share=new string[alShare.Count];
for(int i=0;i<alShare.Count;i++)
{
share[i]=alShare[i].ToString();
}
return share;
}
else
return null;
}