2015-04-23 85 views
0

我問這個問題的原因是因爲如果任何底層文件或文件夾是ReadOnly,.NET會將文件夾視爲ReadOnly。因此,此代碼:如何找出目錄本身是隻讀而不是底層文件

if (!Properties.Settings.Default.searchReadOnly && 
    (diPath.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) 
    writeable = false; 

總是要將寫入設置爲false。

這是一個問題,如果您需要知道根文件夾是否只讀。 我的Docments文件夾是不是隻讀,但是這是在屬性窗口中顯示'S:

My Documents properties

任何幫助,將不勝感激。

編輯

我試圖接近你的建議,但文檔仍似乎有隻讀標誌設置。

if (!Properties.Settings.Default.searchReadOnly && 
    diPath.Attributes.HasFlag(FileAttributes.ReadOnly)) // == true 
    searchable = false; 

這怎麼可能?什麼用戶正在執行代碼?我假設積極登錄的用戶?同樣,假設因爲我可以寫入到Documents文件夾,它不能設置ReadOnly標誌。

+1

這個SO線程應該幫助:[鏈接](http://stackoverflow.com/questions/7511592/check-if-folder-is-read-only-in -c-net) – sszarek

+0

謝謝@sszarek,這很有幫助! – DerpyNerd

回答

0

我找到了解決辦法。

var writePermissionSet = new PermissionSet(PermissionState.None); 
writePermissionSet.AddPermission(new FileIOPermission(FileIOPermissionAccess.Write, path)); 

if (!Properties.Settings.Default.searchReadOnly && 
    !writePermissionSet.IsSubsetOf(AppDomain.CurrentDomain.PermissionSet)) 
    //diPath.Attributes.HasFlag(FileAttributes.ReadOnly)) 
    searchable = false; 

該好好嘗試一下真正確認該目錄的只讀標誌,但它確實已向我保證用戶沒有這個目錄寫權限。這是有點ReadOnly我一直在尋找:D

1

這應該有助於

use the System.IO.DirectoryInfo class: 

var di = new DirectoryInfo(folderName); 

if(di.Exists()) 
{ 
    if (di.Attributes.HasFlag(FileAttributes.ReadOnly)) 
    { 
    //IsReadOnly... 
    } 

}

這種狀態並不意味着只讀它的平均null state這意味着國家從未改變,它是默認的。

這種狀態表示只讀

enter image description here

更新 如果您有標記爲只讀根文件夾只讀被標記一些子文件夾。

那麼試試這個檢查,應用在只讀文件夾不是取消選中並應用,你會看到,沒有更多的標記爲只讀

+0

感謝您的信息,我現在就試試:) – DerpyNerd

+0

我更新了我的問題以反映您的建議。 – DerpyNerd

+0

@RobbieVercammen看到我的更新回答 –

相關問題