簡體   English   中英

C#文件/目錄權限

[英]C# File/Directory Permissions

我正在編寫一個應用程序來管理用戶對文件的訪問。 一個很長的故事的簡短版本是我必須使用目錄和文件priveleges來做到這一點。 我們便宜的CEO沒有文件管理系統......

無論如何...除了用戶可以查看目錄中的文件但實際上沒有看到文件內容的情況之外,我已經完成了所有工作。 (文件中可能存在敏感的HR數據。)

我嘗試了FileSystemRights.ListDirectory,但似乎(dispite MS文檔)也將ReadData設置為true。 我關閉ReadData(讀取文件的能力),我突然再次無法訪問該目錄。 兩者似乎有聯系。

有權獲得許可的想法嗎?

我目前的代碼是:

SetSecurity(pth, usr, FileSystemRights.ListDirectory, AccessControlType.Allow);

...

public void SetSecurity(string dirName, string account,
    FileSystemRights rights, AccessControlType controlType)
{
    // Get a FileSecurity object that represents the
    // current security settings.
    DirectorySecurity dSecurity = Directory.GetAccessControl(dirName);

    dSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType));

    // Set the new access settings.
    Directory.SetAccessControl(dirName, dSecurity);
}

謝謝。

- 傑瑞

FileSystemRights枚舉將ReadData和ListDirectory映射到值1,因此就.NET而言,這兩者是100%等效的。

您是否嘗試過Traverse而不是ListDirectory?

編輯:基於知識庫文章,似乎Windows XP認為它們也是相同的,只有一個僅適用於文件,一個僅適用於目錄。

編輯2:只要將ReadData / ListDirectory訪問規則設置為不被子對象繼承,您就應該能夠將其應用於目錄而不將其應用於目錄中的文件。 FileSystemAccessRule類支持更改繼承標志。

這些文件可能是從父級繼承安全屬性。

在調用Directory.SetAccessControl()之前您可以嘗試調用DirectorySecurity.SetAccessRuleProtection(true,false)來阻止文件繼承。

是的。 Traverse(我認為它的名字錯誤)允許我在文件夾中執行程序,但不能查看文件夾的內容。 老實說,不確定為什么這是有用的。

我即將告訴首席執行官,它無法完成並再次觀看火花。 :P

它是在實例化FileSystemAccessRule時未設置的繼承和傳播值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM