最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實現讀取和設置文件與文件夾的權限

 更新時間:2024年03月12日 11:13:52   作者:無熵~  
這篇文章主要為大家詳細介紹了如何使用C#實現讀取和設置文件與文件夾的權限,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

C#程序運行時經常遇到文件或文件夾權限問題,導致程序運行失敗。為了解決這個頭疼的問題,我們通常要讀取和設置文件、文件夾權限。

讀取文件、文件夾權限

        /// <summary>
        /// 讀取文件、文件夾權限
        /// </summary>
        /// <param name="path"></param>
        private void ReadPathRule(string path)
        {
            DirectoryInfo di = new DirectoryInfo(path);
            DirectorySecurity ds = di.GetAccessControl(AccessControlSections.All);
            foreach (FileSystemAccessRule rule in ds.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
            {
                Console.WriteLine("----------------------------------");
                Console.WriteLine(rule.IdentityReference.Value);
                if ((rule.FileSystemRights & FileSystemRights.Read) != 0)
                    Console.WriteLine(rule.FileSystemRights.ToString());
            }
        }

設置文件權限

        /// <summary>
        /// 為文件添加users,everyone用戶組的完全控制權限
        /// </summary>
        /// <param name="filePath"></param>
        static void AddSecurityControll2File(string filePath)
        {
 
            //獲取文件信息
            FileInfo fileInfo = new FileInfo(filePath);
            //獲得該文件的訪問權限
            System.Security.AccessControl.FileSecurity fileSecurity = fileInfo.GetAccessControl();
            //添加ereryone用戶組的訪問權限規(guī)則 完全控制權限
            fileSecurity.AddAccessRule(new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow));
            //添加Users用戶組的訪問權限規(guī)則 完全控制權限
            fileSecurity.AddAccessRule(new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow));
            //設置訪問權限
            fileInfo.SetAccessControl(fileSecurity);
        }

設置文件夾權限

        /// <summary>
        ///為文件夾添加users,everyone用戶組的完全控制權限
        /// </summary>
        /// <param name="dirPath"></param>
        static void AddSecurityControll2Folder(string dirPath)
        {
            //獲取文件夾信息
            DirectoryInfo dir = new DirectoryInfo(dirPath);
            //獲得該文件夾的所有訪問權限
            System.Security.AccessControl.DirectorySecurity dirSecurity = dir.GetAccessControl(AccessControlSections.All);
            //設定文件ACL繼承
            InheritanceFlags inherits = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit;
            //添加ereryone用戶組的訪問權限規(guī)則 完全控制權限
            FileSystemAccessRule everyoneFileSystemAccessRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);
            //添加Users用戶組的訪問權限規(guī)則 完全控制權限
            FileSystemAccessRule usersFileSystemAccessRule = new FileSystemAccessRule("Users", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow);
            bool isModified = false;
            dirSecurity.ModifyAccessRule(AccessControlModification.Add, everyoneFileSystemAccessRule, out isModified);
            dirSecurity.ModifyAccessRule(AccessControlModification.Add, usersFileSystemAccessRule, out isModified);
            //設置訪問權限
            dir.SetAccessControl(dirSecurity);
        }

注意:修改權限有時候需要程序有管理員權限,怎么以管理員身份運行程序,請參考:

C#/WPF 以管理員身份運行程序

在Vista 和 Windows 7 及更新版本的操作系統(tǒng),增加了 UAC(用戶賬戶控制) 的安全機制,如果 UAC 被打開,用戶即使以管理員權限登錄,其應用程序默認情況下也無法對系統(tǒng)目錄、系統(tǒng)注冊表等可能影響系統(tǒng)正常運行的設置進行寫操作。這個機制大大增強了系統(tǒng)的安全性,但對應用程序開發(fā)者來說,我們不能強迫用戶去關閉UAC,但有時我們開發(fā)的應用程序又需要以Administrator 的方式運行。

解決辦法有以下幾種方式:

通過 System.Diagnostics.Process.Start() 方式啟動(推薦)

通過添加應用程序清單文件(過于暴力,且有提示)

直接修改程序文件的屬性(不方便部署)

方法一:通過 System.Diagnostics.Process.Start() 方式啟動:

WPF App.xaml代碼:

<Application x:Class="AdminLoadDemo.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:AdminLoadDemo"
             Startup="Application_Startup">
    <Application.Resources>
         
    </Application.Resources>
</Application>

WPF App.xaml.cs代碼:

        private void Application_Startup(object sender, StartupEventArgs e)
        {
              /**
              * 當前用戶是管理員的時候,直接啟動應用程序
              * 如果不是管理員,則使用啟動對象啟動程序,以確保使用管理員身份運行
              */
             //獲得當前登錄的Windows用戶標示
             System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
             System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
            //判斷當前登錄用戶是否為管理員
            if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
            {
                //如果是管理員,則直接運行
                new MainWindow().Show();
            }
            else
            {
                //創(chuàng)建啟動對象
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                startInfo.UseShellExecute = true;
                startInfo.WorkingDirectory = Environment.CurrentDirectory;
                startInfo.FileName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
                //設置啟動動作,確保以管理員身份運行
                startInfo.Verb = "runas";
                try
                {
                    System.Diagnostics.Process.Start(startInfo);
                }
                catch
                {
                    return;
                }
                //退出
                Environment.Exit(0);
            }
        

到此這篇關于C#實現讀取和設置文件與文件夾的權限的文章就介紹到這了,更多相關C#文件權限內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • c#中Invoke與BeginInvoke的用法及說明

    c#中Invoke與BeginInvoke的用法及說明

    這篇文章主要介紹了c#中Invoke與BeginInvoke的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 關于System.Convert的那些事兒

    關于System.Convert的那些事兒

    本篇文章是對System.Convert的那些事兒,進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#遞歸算法和排列算法

    C#遞歸算法和排列算法

    這篇文章介紹了C#的遞歸算法和排列算法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 基于WebClient實現Http協(xié)議的Post與Get對網站進行模擬登陸和瀏覽實例

    基于WebClient實現Http協(xié)議的Post與Get對網站進行模擬登陸和瀏覽實例

    這篇文章主要介紹了基于WebClient實現Http協(xié)議的Post與Get對網站進行模擬登陸和瀏覽的方法,以實例形式詳細分析了WebClient模擬POST與GET登陸與瀏覽的過程,對于C#項目開發(fā)來說具有不錯的參考借鑒價值,需要的朋友可以參考下
    2014-11-11
  • C#中實現可變參數實例

    C#中實現可變參數實例

    這篇文章主要介紹了C#中實現可變參數實例,本文演示使用params 實現可變數量的參數,并且這些參數的類型可以不同,需要的朋友可以參考下
    2015-01-01
  • 使用C#代碼在Word文檔中設置段落縮進

    使用C#代碼在Word文檔中設置段落縮進

    本文介紹了如何通過編程方式在Word文檔中設置段落縮進,主要左縮進、右縮進、首行縮進和懸掛縮進等內容,詳細解釋了設置段落縮進的具體步驟和代碼實現,提供了示例代碼幫助讀者更好地理解和實現,需要的朋友可以參考下
    2026-04-04
  • WPF輕松實現進度條的示例代碼

    WPF輕松實現進度條的示例代碼

    WPF中的ProgressBar控件用于表示任務進度,適用于文件下載、數據處理等場景,本文將通過XAML和C#代碼展示如何創(chuàng)建一個基本的WPF進度條,并演示如何通過事件處理程序更新進度條的值來模擬耗時操作,感興趣的小伙伴跟著小編一起來看看吧
    2024-12-12
  • C#?原生編碼智能體運行時?SharpClawCode詳解

    C#?原生編碼智能體運行時?SharpClawCode詳解

    SharpClawCode是一個專為 .NET 10 和 C# 13 生態(tài)系統(tǒng)設計的C# 原生編碼智能體運行時(coding-agent runtime),本文給大家介紹C#原生編碼智能體運行時?SharpClawCode的相關知識,感興趣的朋友一起看看吧
    2026-04-04
  • C#實現寫入與讀出文本文件的實例代碼

    C#實現寫入與讀出文本文件的實例代碼

    本篇文章是對使用C#實現寫入與讀出文本文件的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#實現坦克大戰(zhàn)游戲

    C#實現坦克大戰(zhàn)游戲

    這篇文章主要為大家詳細介紹了C#實現坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07

最新評論

黄山市| 普陀区| 屯门区| 三穗县| 鹤峰县| 宜兰市| 普定县| 乐东| 元江| 临海市| 沙洋县| 平山县| 武城县| 长寿区| 杭锦后旗| 榆中县| 奉化市| 万源市| 同德县| 南雄市| 广饶县| 高安市| 汝阳县| 钟祥市| 富裕县| 章丘市| 保亭| 攀枝花市| 鸡西市| 武威市| 伊宁县| 明光市| 琼结县| 横山县| 建湖县| 镇巴县| 湘西| 磐石市| 读书| 贵州省| 甘孜|