Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确定文件夹是否在.NET中共享_C#_.net_Windows - Fatal编程技术网

C# 确定文件夹是否在.NET中共享

C# 确定文件夹是否在.NET中共享,c#,.net,windows,C#,.net,Windows,是否有办法通过.net framework确定文件夹是否共享 directory、DirectoryInfo或FileAttributes似乎都没有相应的字段 我忘了提到的一件事是,我想检查网络共享。但我将调查WMI内容。尝试使用WMI并执行从Win32\u ShareToDirectory选择*查询。您可以使用WMI Win32\u Share。 看看: 显示查询、创建和删除共享文件夹的示例。您可以使用WMI Win32_共享获取所有共享文件夹的列表,并查看您要查找的文件夹是否位于它们之间。

是否有办法通过.net framework确定文件夹是否共享

directory、DirectoryInfo或FileAttributes似乎都没有相应的字段


我忘了提到的一件事是,我想检查网络共享。但我将调查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)测试它,请参阅此