2012-07-14 98 views
1

我創建了一個應用程序,該應用程序將拒絕所有對文件夾的完全控制訪問權限,直到某個用戶使用正確的密碼登錄到該應用程序。我的鎖定程序的來源是:文件夾鎖定程序

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); 
    } 
} 

但是這顯示訪問被拒絕的錯誤。如何避免這個錯誤?

回答

2

拒絕權限的優先級高於允許。您必須刪除拒絕權限才能添加另一個權限。

0

嘗試更換此:

ds.AddAccessRule(new FileSystemAccessRule(@"everyone", FileSystemRights.FullControl, AccessControlType.Allow)); 
di.SetAccessControl(ds); 

ds.AddAccessRule(new FileSystemAccessRule(@"everyone", FileSystemRights.FullControl, AccessControlType.Deny)); 
di.RemoveAccessRule(ds); 

希望這會有所幫助。