假设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个问题不能被任何人回答,你要么提出很多不好的问题,要么提出脱离主题的问题,要么你自己解决后没有跟进并回答你自己的问题以造福他人。但当然,你有权利得到你自己的意见。 :) –