阻止以编程方式在特定文件夹中创建文件

时间:2014-03-19 10:50:37

标签: c# .net windows shell desktop-application

我正在使用C#开发Windows桌面应用程序。在其中我想实现某个功能,以便用户只能在根文件夹中的文件夹内创建一个文件。

假设我的根文件夹是A并且其中有A1,A2,A3文件夹,则用户可以在任何文件夹A1,A2,A3中创建文件。但是不应该允许他直接在A中创建文件。

所以简而言之,我想在一个特定文件夹中阻止文件创建。有没有办法实现这个?是否可以使用shell脚本?

提前致谢!

2 个答案:

答案 0 :(得分:0)

创建一个用于创建文件的.net方法的包装器。然后实现一个黑名单(或白名单),您可以使用它来指定要阻止的文件夹(或者在允许列表允许的情况下)。

启动时,将列表加载到List<string>并在包装器中使用它以确定是否执行操作

例如,如果您使用File.Create来创建文件;您的包装器可能如下所示

public void CreateFile(string folderName, string fileName, IList<string> whiteList)
{
  // can I create the file in this folder ????
  if (!whiteList.Any(f => f.Equals(folderName, StringComparison.InvariantCultureIgnoreCase)))
  {
   // No apparently not... I should now throw an exception
  }

  // create the file
  File.Create(string.Format("{0}/{1}", folderName, fileName)).Dispose();

}

现在,当您想在应用程序中创建文件时,请使用CreateFile代替File.Create

答案 1 :(得分:0)

创建文件夹时

您可以查看父文件夹名称...

Ex:Directory.GetParent(&#34; A \ A1&#34;); 这将为文件夹名称A提供DirectoryInfo名称。

您可以将RootFolderName与GetParent Name进行比较,并限制应用程序的创建。

由于