誰かが正しいパスワードでアプリケーションにログインするまで、フォルダへのフル コントロール アクセスをすべて拒否するアプリケーションを作成しました。ロックプログラムの私のソースは次のとおりです。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Security.AccessControl;
using System.DirectoryServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string Directoryd = "D:";
string mydirectory = Directoryd + "\\" + "rs\\";
if (!Directory.Exists(mydirectory))
{
Directory.CreateDirectory(mydirectory);
}
DirectoryInfo di = new DirectoryInfo(mydirectory);
DirectorySecurity ds = di.GetAccessControl();
ds.AddAccessRule(new FileSystemAccessRule(
@"everyone",
FileSystemRights.FullControl,
AccessControlType.Deny));
di.SetAccessControl(ds);
}
}
}
これにより、フォルダー D:/rs/ へのすべてのアクセスが拒否されます。次のように、ボタンを押してフォルダーのロックを解除するスクリプトを考えました。
private void login_Click(object sender, EventArgs e)
{
string username = text1.Text;
string password = text2.Text;
if(username == "aname" && password == "password")
{
string Directoryd = "D:";
string mydirectory = Directoryd + "\\" + "rs\\";
if (!Directory.Exists(mydirectory))
{
Directory.CreateDirectory(mydirectory);
}
DirectoryInfo di = new DirectoryInfo(mydirectory);
DirectorySecurity ds = di.GetAccessControl();
ds.AddAccessRule(new FileSystemAccessRule(
@"everyone",
FileSystemRights.FullControl,
AccessControlType.Allow));
di.SetAccessControl(ds);
}
}
しかし、これはアクセス拒否エラーを示しています。このエラーを回避するにはどうすればよいですか?