C# 如何解決文件寫權(quán)限不可訪問
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
實(shí)際業(yè)務(wù)中,我們可能會遇到我們的安裝包將程序安裝在C盤 Windows系統(tǒng)本身有著安全策略,在系統(tǒng)文件夾下是不允許隨便對文件進(jìn)行 要解決以上問題,我們有兩種方式:
直接針對文件夾進(jìn)行權(quán)限的方法如下圖所示: 只需要添加 這種方法比較簡單,我們不過多解說。主要看下我們?nèi)绾瓮ㄟ^軟件代碼的方式來使之生效。 具體實(shí)現(xiàn)如下: /// <summary> ///為文件夾添加users,everyone用戶組的完全控制權(quán)限 /// </summary> /// <param name="dirPath"></param> static bool AddSecurityControll2Folder(string dirPath) { try { //獲取文件夾信息 DirectoryInfo dir = new DirectoryInfo(dirPath); //獲得該文件夾的所有訪問權(quán)限 DirectorySecurity dirSecurity = dir.GetAccessControl(AccessControlSections.All); //設(shè)定文件ACL繼承 InheritanceFlags inherits = InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit; //添加ereryone用戶組的訪問權(quán)限規(guī)則 完全控制權(quán)限 FileSystemAccessRule everyoneFileSystemAccessRule = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow); //添加Users用戶組的訪問權(quán)限規(guī)則 完全控制權(quán)限 //FileSystemAccessRule usersFileSystemAccessRule = new FileSystemAccessRule("Users", FileSystemRights.FullControl, inherits, PropagationFlags.None, AccessControlType.Allow); dirSecurity.ModifyAccessRule(AccessControlModification.Add, everyoneFileSystemAccessRule, out bool isModified); //dirSecurity.ModifyAccessRule(AccessControlModification.Add, usersFileSystemAccessRule, out bool isModified); //設(shè)置訪問權(quán)限 dir.SetAccessControl(dirSecurity); return isModified; } catch (Exception) { return false; } } 注意:執(zhí)行權(quán)限更改時(shí),需要依賴管理員權(quán)限,所以我們在修改權(quán)限的時(shí)候,直接調(diào)用以上代碼是會拋異常的。 如果我們的應(yīng)用程序不具備管理員權(quán)限,那么我們不應(yīng)該在應(yīng)用程序中直接去修改它。我們可以在安裝的時(shí)候,對它進(jìn)行權(quán)限更改,因?yàn)榘惭b的時(shí)候,可以以管理權(quán)限運(yùn)行安裝。 該文章在 2023/9/10 12:16:44 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |