在win 2000或更高版本(任何语言)的操作系统上,我可以假设此路径始终存在吗? 例如,我知道在某些语言的win xp中,“Program Files”目录具有不同的名称。 System32文件夹也是如此吗?
感谢。 辖。
答案 0 :(得分:23)
你绝对不能假设:Windows可以安装在不同的驱动器号上,也可以安装在不同的目录中。在以前的工作中,PC Windows安装在D:\ WINNT中,例如。
简短的回答是使用API调用GetSystemDirectory(),它将返回您所追踪的路径。
更长的答案是问:你真的需要知道吗?如果您正在使用它将文件复制到Windows目录中,我建议您询问是否确实要这样做。不鼓励复制到Windows目录,因为您可以非常轻松地搞乱其他应用程序。如果您正在使用路径查找DLL,为什么不依靠操作系统找到合适的路径而不提供路径?如果您正在挖掘操作系统文件的部分内容,请考虑:将来是否可以使用?一般来说,如果您希望程序在未来的Windows版本上运行,最好不要在Windows目录中明确指出。
答案 1 :(得分:16)
不,你不能这么认为。
Windows可以安装到其他路径。一种解决方案是通过调用GetSystemDirectory(作为Windows API的一部分实现)来查找它。
答案 2 :(得分:5)
Windows可以安装在不同的硬盘驱动器上,也可以安装在不同的文件夹中。使用%windir%或%systemroot%环境变量可以转到Windows文件夹并附加system32。或者使用%path%变量,它通常是第一个入口和搜索dlls AFAIK等文件的首选方法。根据评论:不要太依赖system32 dir作为第一项。我认为可以安全地假设它在某个地方的%path%。
答案 3 :(得分:3)
我会使用 GetWindowsDirectory Win32 API来获取当前的Windows目录,将 System32 附加到其中,然后检查它是否存在。
答案 4 :(得分:2)
使用“windir”环境变量然后将“System32”附加到该路径的末尾可能更安全。有时窗口可能位于不同的文件夹或不同的驱动器下,因此“windir”会告诉您它在哪里。
据我所知,system32文件夹应该始终存在于windows文件夹下。
答案 5 :(得分:0)
仅仅是一个FYI,但在终端服务器环境(即Citrix)中,GetWindowsDirectory()可能会为远程用户返回唯一路径。
随着越来越多的公司使用虚拟化桌面,开发人员需要牢记这一点。