﻿# 解決 “為這個系統所設定的修復原則含有不正確的修復憑證”

前陣子在實驗 .NET Framework 裡面的 [File.Encrypt](http://msdn.microsoft.com/zh-tw/library/system.io.file.encrypt\(v=VS.90\).aspx) 與 [File.Decrypt](http://msdn.microsoft.com/zh-tw/library/system.io.file.decrypt\(v=VS.90\).aspx) 方法，想透過 .NET 程式對檔案系統中的檔案進行加解密，照理說應該很簡單易用的，不過程式執行時卻會引發一個 [System.IO.IOException](http://msdn.microsoft.com/zh-tw/library/System.IO.IOException\(v=VS.90\).aspx) 的例外狀況，錯誤訊息是「**為這個系統所設定的修復原則含有不正確的修復憑證。**」，由於我的電腦有加入網域，查到後來原來是**網域主控站**上的加密檔案系統憑證有兩張，而且有一張已經過期了，所以才會發生這個錯誤，因此這個問題直接從網域主控站上設定群組原則即可解決。

從我的 **網域主控站** 上的 Default Domain Policy 群組原則來看（請參考下圖路徑），我的加密檔案系統(Encrypting File System) 裡包含了兩張一模一樣的憑證，差別在於其中一張憑證已經過期了：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6a133ef95b55ccf68d2f-image_643.png)

解決辦法就是將過期的憑證刪除，然後再到 **用戶端電腦** (意即要執行加解密的那台電腦) 使用 **gpupdate /force** 重新套用群組原則即可！

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/68c753be32ab4194efc1-SNAGHTML141cae32.png)

以下是手動對檔案進行加解密的步驟：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5e0d6e0b9be871d8cce8-SNAGHTML14210f35.png)

如果「加密內容，保護資料」這個選項已經勾選的話，那就代表這個檔案已經加密過了：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/f8b3ef74a499fea6e25e-SNAGHTML1421a04d.png)

如果再點選上述的「詳細資料」就可以看到這個檔案所指定的憑證使用狀況，上面是允許開啟該檔案的憑證清單，下方則是由修復原則鎖定義的這個檔案的修復憑證，也就是我們在群組原則那邊定義的加密檔案系統憑證。

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/377230ba866e7be365fc-SNAGHTML14240556.png)

以下是透過 [Cipher.exe](http://support.microsoft.com/kb/298009) 指令列工具進行加解密檔案或目錄的方式：

**加密檔案**

```
cipher /E 1.txt
```

   ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/147462a5c64a67b328d3-image_644.png)

**解密檔案**

```
cipher /D 1.txt
```

   ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/4212ecd620740e1df6e1-image_645.png)

**相關連結**

-   [如果我的修復憑證已過期，如何加密檔案？](http://windows.microsoft.com/zh-TW/windows7/How-do-I-encrypt-a-file-if-my-recovery-certificate-has-expired)
-   [建立加密檔案的修復憑證](http://windows.microsoft.com/zh-TW/windows-vista/Create-a-recovery-certificate-for-encrypted-files) (非網域下的建立方式)
-   [疑難排解加密的檔案與資料夾](http://windows.microsoft.com/zh-TW/windows-vista/Troubleshoot-encrypted-files-and-folders)
-   [備份加密檔案系統 (EFS) 憑證](http://windows.microsoft.com/zh-TW/windows7/Back-up-Encrypting-File-System-EFS-certificate)
-   [遺失檔案加密金鑰時該怎麼辦](http://windows.microsoft.com/zh-TW/windows-vista/What-to-do-if-you-lose-your-file-encryption-key)
-   [憑證：常見問題集](http://windows.microsoft.com/zh-TW/windows-vista/Certificates-frequently-asked-questions)
-   [How do I get EFS working on a domain joined computer?](http://social.technet.microsoft.com/Forums/en-US/winserverfiles/thread/5c0bf259-a1eb-4cae-b812-b43584007337/)
-   [Windows XP EFS（Encryption File System）—聯強 e 城市](https://web.archive.org/web/20130627045237/http://www.synnex.com.tw/asp/fae_qaDetail.asp?topic=FAE&seqno=17103)
-   [Error message when you try to renew the default recovery agent certificate in Windows Server 2003, in Windows XP, or in Windows 2000: "This certificate cannot be renewed because it does not contain enough information to generate a renewal request"](https://web.archive.org/web/20130618160136/http://support.microsoft.com/kb/929103/en-us)
-   [Cipher.exe 加密檔案系統的安全性工具](http://support.microsoft.com/kb/298009/zh-tw)
-   [公開金鑰基礎結構](http://technet.microsoft.com/zh-tw/library/cc757327\(WS.10\).aspx) ( [Public Key Infrastructure](http://technet.microsoft.com/en-us/library/cc757327\(WS.10\).aspx) )
-   [加密檔案系統](http://technet.microsoft.com/zh-tw/library/cc782901\(WS.10\).aspx) ( [Encrypting File System](http://technet.microsoft.com/en-us/library/cc782901\(WS.10\).aspx) )
