問題說明:

假設您有一台Windows 2003 File Server透過委派的方式讓用戶端可以將EFS加密檔案上傳至File Server,並且仍保留EFS加密的屬性,您將要將這台Windows 2003原機升級至Windows 2008,並且確保用戶端仍可以遠端正常開啟這些加密文件,該如何作?

您可以參考 http://support.microsoft.com/kb/948690/en-us文件說明,透過實作過程解釋如下:

 

我的LAB環境總共三台機器,分別為:

  • Machine 1:Windows 2003 DC x1
  • Machine 2:Windows 2003 File Server x 1
  • Machine 3:Windows XP Client XP  x 1

1. Machine 1對Machine 2做委派 ,讓Machine 3 的Client可以將檔案copy至Machine 2,並且仍保留EFS加密的屬性。

2. 升級Machine 2至Windows 2008 SP2。(備註)

3. 測試從XP連到Machine 2,確認仍可以開啟文件。

=============

備註

在升級完至Windows 2008後,您一定要用文件 http://support.microsoft.com/kb/948690 上的工具做一次掃描,用戶端才能正常使用原來的金鑰去解密,原因是:

1. 您的Client是透過遠端的方式將EFS加密文件上傳至File Server,這個時後,您在 File Server上會產生該帳戶的User profile以存放新的金鑰,但這個Profile並非完整的。您可以去比較曾經在File Server上實際登入過帳戶的Profile,以及未登入過但透過 EFS加密委派產生的Profile裏的結構。如下圖:

有本機登入過帳戶的profile結構:

clip_image002

沒有本機登入過帳戶的profile結構:

clip_image004

2. 檢查HKLM\Microsoft\Windows NT\CurrentVersion\ProfileList機碼,比較有登入過的帳戶及沒有登入過帳戶的機碼,則會如下:

該帳戶有登入過的機碼會是

clip_image006

沒實際登入過,但是透過上傳加密檔案而產生的Profile,機碼是

clip_image008

透過以上檔案結構及機碼的比較,您會發現有登入過該電腦的帳戶及沒有登入過的帳戶Profile很明顯的有所不同。

3. 在原機升級至Windows 2008 SP2後,再來比較一下 User Profile的結構:

有本機登入過帳戶的profile結構:

clip_image010

沒有本機登入過帳戶的profile結構:

clip_image012

4. 再去看HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList機碼,您會發現只剩下曾經本機登入過帳戶的機碼,透過上傳EFS加密文件自動產生Profile對應的機碼都因為升級Windows 2008而刪除了。

clip_image014

5. 因此,我們就必需使用http://support.microsoft.com/kb/948690下載的工具再去掃描系統,然後重建這些連結,解決問題。

指令就是EfsUpgRecoverAccts /R

clip_image016

6. 在執行完後,它將所有沒有登入過的profile轉換成以下的格式 (這些Profile會在後面多了.000)

clip_image018

7. 機碼也會再建立一次,對應的路徑也是會多了.000

clip_image020

8. 從Client去遠端存取file server,可以開啟加密檔案了

clip_image022