如何在 Windows 中將資料夾設定為唯讀?

如何在 Windows 中將資料夾設定為唯讀?

所以我想阻止自己將一些文件寫入資料夾。我總是使用 back_up 資料夾進行比較,將資料傳輸到目標項目。問題是有時我會錯誤地編輯備份檔案。有什麼辦法可以拒絕自己的編輯/寫入權限嗎?我不想重命名/刪除檔案。設定資料夾只讀標誌完全沒有任何作用 - 之後我可以再次毫無問題地編輯/刪除檔案(至少在 Win 8.1 中)。這對我來說非常重要 - 因為現在我已經通過這種方式損壞了許多備份文件,這給我帶來了很多麻煩。有任何想法嗎?

我正在運行最新版本的 Windows 8.1 x64。

答案1

原答案:

如果是NTFS,則可以使用檔案系統安全功能。

  1. 編輯資料夾的“安全性”選項卡,我假設您之前沒有更改它們:刪除“經過身份驗證的用戶”,它可能會警告您必須先停用繼承,請在“高級”選項中執行此操作。

  2. 確保 UAC 已開啟。

現在,當您嘗試編輯/新增/刪除該資料夾中的任何內容時,UAC 會警告您,您甚至可以將其設定為更高級別,每次都必須輸入密碼。

編輯: 上述方法是一個萬無一失的簡單指南,僅適用於Windows Vista+,並且需要管理員權限和未經修改的檔案/資料夾安全設定才能開始。

但是,如果您了解背後的原理,則可以在幾乎任何具有 NTFS 的 Windows 版本上使用任何使用者帳戶執行此操作。

假設您的正常工作帳戶是A,另一個「安全性」帳戶是B,您可以將資料夾擁有者設定為B並授予其完全權限(不要忘記選取「用該物件的可繼承權限替換所有子物件權限” "),然後將帳戶 A 新增為唯讀,現在您只能使用帳戶 B 對其進行寫入,但仍可以在日常帳戶 A 中讀取/使用它。

如果沒有管理員權限,您無法從存取清單中刪除管理員,也無法變更擁有者(如果是管理員)。但無論如何,該方法應該有效,如果您建立該資料夾,則所有者應該預設為您。

附言。以上都是我的經驗,如果大家有更好的方法去歡迎指教。

答案2

它是包含文件的單一資料夾。每次進行更改時,我都會“另存為”並增加版本號。然而,有時我不小心點擊「儲存」並覆蓋我的檔案 –史蒂文·瓦斯切拉羅


如何將資料夾內的文件設定為唯讀

您可以使用ICACLS並明確否認寫入屬性對特定資料夾中的所有文件的權限,並防止您自己(或任何安全性群組)覆蓋或修改這些文件,但仍允許讀取存取權限以開啟它們。

以下是一個帶有環境%userdomain%\%username%變數的批次腳本,用於定義當前網域(或本機電腦名稱)和登入您執行批次腳本的電腦上的使用者名稱(即<domain>\<username>)以拒絕對該帳戶的存取;如果需要的話,也可以輕鬆地將其替換為任何有效的網域安全性群組名稱(即<domain>\<securitygroupname>)。

批次腳本

將變數的值替換Folder=為您需要的位置的完整明確資料夾路徑(或 UNC 路徑),以使現有檔案處於唯讀狀態。

@ECHO ON

SET Folder=C:\Users\User\Desktop\Test
SET Security=%userdomain%\%username%

ICACLS "%Folder%\*" /deny "%Security%":(OI)(WA)
EXIT

如果您查看檔案 ACL 權限,您將看到寫入屬性現在明確否認適用於這個資料夾和文件

在此輸入影像描述

這是一個包含 V1、V2 等測試文件的資料夾,已經執行了批次腳本。

在此輸入影像描述

如果您嘗試儲存文件,將彈出另存為對話框,並且如果您嘗試覆蓋具有相同文件名稱的已存在的文件,您將收到拒絕存取錯誤訊息,因為該文件對此是唯讀存取的帳戶。

在此輸入影像描述

您只需進行另存為,為文件指定一個不同的名稱,但將其保存在您鎖定所有文件為唯讀的同一資料夾中,這就是您將數字增加一或其他的位置。

此資料夾中任何新儲存的檔案現在都將具有寫入屬性被拒絕,因此一旦具有新檔案名稱的檔案儲存到此資料夾,這些權限限制將立即生效。

在此輸入影像描述


進一步閱讀和資源

  • 環境變數

  • ICACLS

    /deny Sid:perm explicitly denies the specified user access rights.
        An explicit deny ACE is added for the stated permissions and
        the same permissions in any explicit grant are removed.
    
    WA - write attributes
    
    
        inheritance rights may precede either form and are applied
        only to directories:
    (OI) - object inherit
    

答案3

羅密歐是正確的,您可以透過屬性將單一檔案設為唯讀,但無法保護它不被刪除。

如果您想快速將多個文件更改為唯讀,還有一個進一步的建議。

開啟命令提示字元並attrib +r [path]利用通配符輸入命令*

答案4

右鍵點選資料夾,屬性,在屬性下方,設定唯讀,應用。

這將使該資料夾(以及子資料夾,如果您選擇)中的所有檔案僅供讀取。當您嘗試儲存 R/O 檔案時,軟體會為您提供另存為不同的名稱

相關內容