前陣子在實驗 .NET Framework 裡面的 File.Encrypt 與 File.Decrypt 方法,想透過 .NET 程式對檔案系統中的檔案進行加解密,照理說應該很簡單易用的,不過程式執行時卻會引發一個 System.IO.IOException 的例外狀況,錯誤訊息是「為這個系統所設定的修復原則含有不正確的修復憑證。」,由於我的電腦有加入網域,查到後來原來是網域主控站上的加密檔案系統憑證有兩張,而且有一張已經過期了,所以才會發生這個錯誤,因此這個問題直接從網域主控站上設定群組原則即可解決。
從我的 網域主控站 上的 Default Domain Policy 群組原則來看(請參考下圖路徑),我的加密檔案系統(Encrypting File System) 裡包含了兩張一模一樣的憑證,差別在於其中一張憑證已經過期了:
解決辦法就是將過期的憑證刪除,然後再到 用戶端電腦 (意即要執行加解密的那台電腦) 使用 gpupdate /force 重新套用群組原則即可!
以下是手動對檔案進行加解密的步驟:
如果「加密內容,保護資料」這個選項已經勾選的話,那就代表這個檔案已經加密過了:
如果再點選上述的「詳細資料」就可以看到這個檔案所指定的憑證使用狀況,上面是允許開啟該檔案的憑證清單,下方則是由修復原則鎖定義的這個檔案的修復憑證,也就是我們在群組原則那邊定義的加密檔案系統憑證。
以下是透過 Cipher.exe 指令列工具進行加解密檔案或目錄的方式:
加密檔案
解密檔案
相關連結