C# 如何创建文件夹并对其进行读写限制,使其只能通过我的应用程序打开?

C# 如何创建文件夹并对其进行读写限制,使其只能通过我的应用程序打开?,c#,wpf,directory,C#,Wpf,Directory,我已经创建了一个文件夹,现在我想限制它,这样就没有人可以在其中读写。此文件夹只能由我的应用程序访问。我只能通过我的应用程序读写。实际上,我想在我的文件夹中部署一个沙盒 private void cFolder(object sender, RoutedEventArgs e) { try { if (!Directory.Exists(pathTextBox.Text + "\\" + nameTextBox.Text)) {

我已经创建了一个文件夹,现在我想限制它,这样就没有人可以在其中读写。此文件夹只能由我的应用程序访问。我只能通过我的应用程序读写。实际上,我想在我的文件夹中部署一个沙盒

private void cFolder(object sender, RoutedEventArgs e)
{
    try
    {

        if (!Directory.Exists(pathTextBox.Text + "\\" + nameTextBox.Text))
        {
            //main Folder
            Directory.CreateDirectory(pathTextBox.Text + "\\" + nameTextBox.Text);

            //drive name Folder
            string subdirectory = System.IO.Path.Combine(pathTextBox.Text + "\\" + nameTextBox.Text, "C");
            System.IO.Directory.CreateDirectory(subdirectory);

            //creating sub folders
            string subfolder1 = System.IO.Path.Combine(subdirectory, "Program Files");
            System.IO.Directory.CreateDirectory(subfolder1);
            string subfolder2 = System.IO.Path.Combine(subdirectory, "Program Files(x86)");
            System.IO.Directory.CreateDirectory(subfolder2);
            string subfolder3 = System.IO.Path.Combine(subdirectory, "Setup");
            System.IO.Directory.CreateDirectory(subfolder3);

            //Permissions call


            //next window
            applicationImport go = new applicationImport(pathTextBox.Text, nameTextBox.Text);
            this.Hide();
            go.Show();
        }
        else
        {
            MessageBox.Show("Directory Exists Already", "Error creating folder");
        }
    }
    catch
    {
        MessageBox.Show("Error creating directory. Cannot Access Location");
    }
}

我知道限制对文件夹访问的唯一方法是通过NTFS权限。这是每个用户,而不是每个应用程序。如果希望用户无法找到该文件夹,可以将其放入用户的AppData文件夹中。大多数用户都会隐藏此文件夹,除非选中了“显示隐藏文件和文件夹”选项,并且在“文件夹选项”对话框中取消选择了“隐藏受保护的操作系统文件(推荐)”选项。要在C#中使用它,请使用
Environment.SpecialFolder.ApplicationData
作为位置。下面是一个使用您的代码的示例:

//creating sub folders
            string subfolder1 = System.IO.Path.Combine(Environment.SpecialFolder.ApplicationData,"MyApplication");
            System.IO.Directory.CreateDirectory(subfolder1);
            }
这将创建一个文件夹,位于
C:\Users\\AppData\Roaming\MyApplication
如果
Environment.SpecialFolder.ApplicationData
不起作用,您可以尝试其他
Environment.SpecialFolder
位置。我自己也不知道如何解决这个问题,但是在服务帐户的上下文中运行应用程序而不是在用户帐户中运行应用程序可能会起作用,然后将文件夹的权限分配给该服务帐户--请参见下面的链接