26/11/2019, 17:52

[C#] Hướng dẫn phân quyền Special Permission Folder trên Winform

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách phân quyền truy cập vào folder windows ( Folder Permission C# ) trên Winform. Giao diện demo ứng dụng phân quyền Folder Permission C#: Khi các bạn phân vùng ổ đĩa cứng theo định dạng NTFS, ...

Xin chào các bạn, bài viết hôm nay mình sẽ hướng dẫn các bạn cách phân quyền truy cập vào folder windows (Folder Permission C#) trên Winform.

Giao diện demo ứng dụng phân quyền Folder Permission C#:

PermissionFolder_demo_winform

Khi các bạn phân vùng ổ đĩa cứng theo định dạng NTFS, thì khi các bạn vào thuộc tính của Folder, sẽ có thêm tab Sercurity.

Tab này giúp các bạn phân quyền cho phép các user truy cập và làm việc với folder như: Read, Write, Delete, Fullcontrol...

Ví dụ, mình muốn Deny user: nguyenthao truy cập vào thư mục newFolder2, thì khi chạy ứng dụng xong, user: Nguyenthao click vào folder sẽ hiển thị như hình bên dưới, và không được phép truy cập.

PermissionFolder_demo

Lúc đó các bạn vào danh sách quyền sẽ thấy thông tin có dòng user: nguyenthao Read (deny) như hình bên dưới.

PermissionFolder_demo_csharp

Các bạn cần import hai thư viện: System.Management và System.Management.Instrumentation vào project nhé

Source code Permission Folder C# winform:

using System;
using System.IO;
using System.Management;
using System.Security.AccessControl;
using System.Windows.Forms;

namespace PermissionFolder
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            GetUsers();
            cb_systemRights.DataSource = Enum.GetValues(typeof(FileSystemRights));
            cb_accessControlType.DataSource = Enum.GetValues(typeof(AccessControlType));

          

        }
        public void GetUsers()
        {

            SelectQuery sQuery = new SelectQuery("Win32_UserAccount", "Domain='" + System.Environment.UserDomainName.ToString() + "'");

            try
            {
                ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQuery);
                foreach (ManagementObject mObject in mSearcher.Get())
                {
                    cbUser.Items.Add(mObject["Name"]);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void btn_browser_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog myFolderBrowserDialog = new FolderBrowserDialog();
            myFolderBrowserDialog.ShowDialog();
            tbFolder.Text = myFolderBrowserDialog.SelectedPath.ToString();
        }

        private void btn_run_Click(object sender, EventArgs e)
        {
            DirectoryInfo myDirectoryInfo = new DirectoryInfo(tbFolder.Text);
            DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl();
            string User = Environment.UserDomainName + "\" + cbUser.SelectedItem.ToString();
            var fileSystemRights = (FileSystemRights) Enum.Parse(typeof(FileSystemRights), cb_systemRights.Text);
            var accessControlType = (AccessControlType) Enum.Parse(typeof(AccessControlType), cb_accessControlType.Text);
            myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, fileSystemRights, accessControlType));
            //myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, FileSystemRights.FullControl, AccessControlType.Allow));
            myDirectoryInfo.SetAccessControl(myDirectorySecurity);

            MessageBox.Show("Permissions Altered Successfully");
        }
    }

}

Thanks for watching!

DOWNLOAD SOURCE

Tags: folder permission c#special permission folder c#
0