假設Windows本地和網絡文件路徑不區分大小寫是否安全?Windows環境中的文件路徑不區分大小寫?
19
A
回答
16
是的。 Windows(本地)文件系統(包括NTFS)以及FAT和變體不區分大小寫(通常)。網絡文件系統的底層實現可能區分大小寫,但是,允許Windows訪問的大多數軟件(如SMB)都會自動將區分大小寫的文件系統顯示爲不區分大小寫的Windows。
有關詳細信息,我讀了Wikipedia article on filenames中的部分。
20
Windows的區分大小寫實際上是在應用程序打開文件的過程中實現的。 NTFS可以是區分大小寫的文件系統,並且可以愉快地存儲文件,相同的名稱僅在同一個目錄中不同。
在Windows上,最終通過CreateFile API打開所有文件 - 如果將FILE_FLAG_POSIX_SEMANTICS
標誌傳遞給調用(並且正在訪問的文件系統本身區分大小寫),那麼文件將根據精確的名稱匹配打開。如果FILE_FLAG_POSIX_SEMANTICS
未被傳遞,那麼文件系統會打開一個不區分大小寫的文件,並打開其中一個具有匹配名稱的文件。如果有多於一個,則未定義哪一個實際打開。
大多數C和C++在Windows上運行時實現不提供這種機制的任何訪問,並從來不使用這個標誌,從而只有這樣,才能獲得區分大小寫的行爲是直接使用Windows API。
tl; dr - 您的語言運行庫可能會將您的文件系統暴露爲不區分大小寫或保留大小寫。如果您直接使用Windows API,則可以訪問支持的文件系統,完全區分大小寫。
相關問題
- 1. c#文件路徑字符串比較不區分大小寫
- 2. 包含頭文件時,路徑是否區分大小寫?
- 3. 區分大小寫File.equals區分大小寫的文件系統
- 4. Windows MySQL區分大小寫
- 5. 不區分大小寫路徑startsWIth的endsWith
- 6. nginx和linux上的不區分大小寫路徑匹配
- 7. 用於訪問區分大小寫路徑的Windows API(Bash-on-Ubuntu-on-Windows)
- 8. MVC4中的區分大小寫路由
- 9. Laravel不區分大小寫路線
- 10. 餅乾。區分大小寫的路徑。如何重寫URL
- 11. 使URL路徑不區分大小寫爲Rails
- 12. 如何在Linux環境中禁用區分大小寫
- 13. 使區分大小寫不敏感的區分大小寫表
- 14. 區分大小寫的URL不區分大小寫
- 15. VB.NET不區分大小寫;很好的區分大小寫?
- 16. Windows批處理文件中的區分大小寫
- 17. 灰燼路由路徑區分大小寫
- 18. Lucene如何區分大小寫和不區分大小寫
- 19. 爲什麼區分大小寫和不區分大小寫?
- 20. Windows上的區分大小寫問題
- 21. 區分大小寫區分大小寫還是全大寫?
- 22. 什麼設置會導致區分大小寫的require_once路徑?
- 23. PHP區分大小寫的路徑問題
- 24. Linux:環境變量設置忽略區分大小寫?
- 25. 環境變量路徑中的文件搜索「路徑」
- 26. 不區分大小寫
- 27. 不區分大小寫preg_replace_callback
- 28. distinctUnionOfObjects不區分大小寫
- 29. 不區分大小寫
- 30. System.IO.FileInfo不區分大小寫
定義「安全」。 NTFS _can_可以配置爲具有區分大小寫的文件名,但幾乎沒有人會這樣做(並且那些通常準備承擔破解程序的責任)。但爲什麼你需要知道這一點? –
@肯,51%沒有臭味。大量的問題 - 通常最有趣的 - 就是沒有合理的答案。 51%表明這不是不知道勾選勾選內容的用戶;不管他的其他缺點如何,他顯然會對接受什麼做出合理的決定。 –
@亨寧,我不同意。如果你問100個問題,其中有50個問題不能被任何人回答,你要麼提出很多不好的問題,要麼提出脫離主題的問題,要麼你自己解決後沒有跟進並回答你自己的問題以造福他人。但當然,你有權利得到你自己的意見。 :) –