C# 确定文件夹是否在.NET中共享
是否有办法通过.net framework确定文件夹是否共享 directory、DirectoryInfo或FileAttributes似乎都没有相应的字段C# 确定文件夹是否在.NET中共享,c#,.net,windows,C#,.net,Windows,是否有办法通过.net framework确定文件夹是否共享 directory、DirectoryInfo或FileAttributes似乎都没有相应的字段 我忘了提到的一件事是,我想检查网络共享。但我将调查WMI内容。尝试使用WMI并执行从Win32\u ShareToDirectory选择*查询。您可以使用WMI Win32\u Share。 看看: 显示查询、创建和删除共享文件夹的示例。您可以使用WMI Win32_共享获取所有共享文件夹的列表,并查看您要查找的文件夹是否位于它们之间。
我忘了提到的一件事是,我想检查网络共享。但我将调查WMI内容。尝试使用WMI并执行
从Win32\u ShareToDirectory选择*查询。您可以使用WMI Win32\u Share。
看看:
显示查询、创建和删除共享文件夹的示例。您可以使用WMI Win32_共享获取所有共享文件夹的列表,并查看您要查找的文件夹是否位于它们之间。以下是一个可能对您有所帮助的片段:
public static List<string> GetSharedFolders()
{
List<string> sharedFolders = new List<string>();
// Object to query the WMI Win32_Share API for shared files...
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from win32_share");
ManagementBaseObject outParams;
ManagementClass mc = new ManagementClass("Win32_Share"); //for local shares
foreach (ManagementObject share in searcher.Get()){
string type = share["Type"].ToString();
if (type == "0") // 0 = DiskDrive (1 = Print Queue, 2 = Device, 3 = IPH)
{
string name = share["Name"].ToString(); //getting share name
string path = share["Path"].ToString(); //getting share path
string caption = share["Caption"].ToString(); //getting share description
sharedFolders.Add(path);
}
}
return sharedFolders;
}
公共静态列表GetSharedFolders()
{
List sharedFolders=新列表();
//对象查询WMI Win32_共享API以获取共享文件。。。
ManagementObjectSearcher search=新的ManagementObjectSearcher(“从win32_共享中选择*);
ManagementBaseObject输出参数;
ManagementClass mc=新的ManagementClass(“Win32_共享”);//用于本地共享
foreach(searcher.Get()中的ManagementObject共享){
字符串类型=共享[“类型”]。ToString();
if(type==“0”)//0=DiskDrive(1=打印队列,2=设备,3=IPH)
{
字符串名称=共享[“名称”]。ToString();//获取共享名称
字符串路径=共享[“路径”]。ToString();//获取共享路径
字符串caption=share[“caption”].ToString();//获取共享描述
sharedFolders.Add(路径);
}
}
返回共享文件夹;
}
请注意,我在字节上残酷地复制了粘贴的内容,另一种方法是使用powershell(如果已安装)调用wmi调用,包括对System.Management.Automation的引用,它很可能位于\program files\reference Assembly\microsoft\windowspowershell中
private void button1_Click(object sender, EventArgs e)
{
Runspace rs = RunspaceFactory.CreateRunspace();
rs.Open();
Pipeline pl = rs.CreatePipeline();
pl.Commands.AddScript("get-wmiobject win32_share");
StringBuilder sb = new StringBuilder();
Collection<PSObject> list = pl.Invoke();
rs.Close();
foreach (PSObject obj in list)
{
string name = obj.Properties["Name"].Value as string;
string path = obj.Properties["Path"].Value as string;
string desc = obj.Properties["Description"].Value as string;
sb.AppendLine(string.Format("{0}{1}{2}",name, path, desc));
}
// do something with the results...
}
private void按钮1\u单击(对象发送者,事件参数e)
{
运行空间rs=RunspaceFactory.CreateRunspace();
rs.Open();
管道pl=rs.CreatePipeline();
AddScript(“获取wmiobject win32_共享”);
StringBuilder sb=新的StringBuilder();
集合列表=pl.Invoke();
rs.Close();
foreach(列表中的PSObject对象)
{
字符串名称=对象属性[“名称”]。值为字符串;
字符串路径=对象属性[“路径”]。值为字符串;
string desc=obj.Properties[“Description”]。值为字符串;
sb.AppendLine(string.Format(“{0}{1}{2}”,name,path,desc));
}
//对结果做点什么。。。
}
您能告诉我如何检查本地pc exist中的共享文件夹吗?我需要从pocket pc(使用.net compact framework)测试它,请参阅此。您能告诉我如何检查本地pc exist中的共享文件夹吗?我需要从pocket pc(使用.net compact framework)测试它,请参阅此