安裝 .NET Framework 2.0 的更新之後,原本區分大小寫的檔案系統變成不區分大小寫

結論
當您安裝 .NET Framework 2.0 更新之後,檔案系統從區分大小寫變成不區分大小寫。
徵狀
試想下列案例。基於 Windows/UNIX 交互操作性的考量,您在 Microsoft Windows 檔案系統上啟用區分大小寫功能。接著,您安裝了 Microsoft .NET Framework 2.0 的更新並重新啟動電腦。在這個案例中,檔案系統不再區分大小寫。因為檔案系統不再區分大小寫,所以您可能會在需要區分大小寫的應用程式中收到錯誤訊息。此外,這可能會導致資料遺失,因為檔案意外地因非預期不區分大小寫而遭到覆寫。
發生的原因
之所以發生這個問題,是因為原始 .NET Framework 2.0 安裝程式出現問題而將
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitive
登錄機碼的值設定為 1。
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitive
登錄機碼決定檔案系統是否區分大小寫。如果這個機碼的值設為 1,則檔案系統會被視為不區分大小寫;如果這個機碼的值設為 0,則檔案系統會被視為區分大小寫。

由於 Windows Installer 更新的執行方式,每個更新都會重新執行原始 .NET Framework 2.0 安裝程式中的登錄變更。因此,就像 .NET Framework 安裝程式,這個登錄機碼的值會設定為 0。然後,此行為會覆寫使用者為這個機碼設定的任何值。例如,如果您將這個登錄機碼的值設為 0 (檔案系統區分大小寫),並且安裝 2006 年 11 月 27 日以前發行的 .NET Framework 2.0 更新,則在更新安裝完成後,這個登錄機碼的值會設定為 1。結果,檔案系統變成不區分大小寫。

注意 2006 年 11 月 27 日以後發行的 .NET Framework 2.0 更新不會發生這個問題。
其他可行方案
如果您希望檔案系統區分大小寫而將
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\dword:ObCaseInsensitive
登錄機碼的值設為 0,但 .NET Framework 2.0 更新已將這個值設回為 1,請手動將這個登錄機碼重設為 0。請重新啟動系統,使變更生效。例如,假設您的伺服器是異質環境中的 NFS 伺服器,並且登錄機碼值設為 1,您可以手動將值重設為 0。

注意 如果您重新安裝 .NET Framework 2.0,或者修復或重新安裝 2006 年 11 月 27 日以前發行的任何 .NET Framework 2.0 更新,則必須再次手動套用此因應措施。
kbsecurity kbprb case insensitive insensitivity .NET Framework 2.0
內容

文章識別碼:929110 - 最後檢閱時間:12/03/2007 08:04:57 - 修訂: 1.6

Microsoft .NET Framework 2.0, Microsoft .NET Framework 2.0 x64 Edition, Microsoft .NET Framework 2.0 IA64 Edition

  • kbtshoot kbsecurity kbprb KB929110
意見反應