假设路径C:\ WINDOWS \ system32始终存在是否安全?

问题描述 投票:9回答:6

在win 2000或更高版本(任何语言)的操作系统上,我可以假设此路径将始终存在吗?例如,我知道在某些语言的win xp中,“Program Files”目录具有不同的名称。那么System32文件夹是真的吗?

谢谢。辖。

windows operating-system
6个回答
23
投票

您绝对不能假设:Windows可以安装在不同的驱动器号上,也可以安装在不同的目录中。例如,在以前的工作PC上,Windows安装在D:\ WINNT中。

简短的回答是使用API​​调用GetSystemDirectory(),它将返回您之后的路径。

更长的答案是问:你真的需要知道这个吗?如果您正在使用它将文件复制到Windows目录中,我建议您询问是否确实要这样做。不鼓励复制到Windows目录,因为您可以非常轻松地搞乱其他应用程序。如果您正在使用路径查找DLL,为什么不依靠操作系统找到合适的路径而不提供路径?如果您正在挖掘操作系统文件的部分内容,请考虑:将来是否可以使用?一般来说,如果您希望程序在未来的Windows版本上运行,最好不要在Windows目录中明确地浏览。


16
投票

不,你不能这么认为。

Windows可以安装到不同的路径。一种解决方案是通过调用GetSystemDirectory(作为Windows API的一部分实现)来查找它。


5
投票

Windows可以安装在不同的硬盘驱动器上,也可以安装在不同的文件夹中。使用%windir%或%systemroot%环境变量可以转到Windows文件夹并附加system32。或者使用%path%变量,它通常是第一个入口和搜索dlls AFAIK等文件的首选方法。根据评论:不要太依赖system32 dir作为第一项。我认为可以安全地假设它在某个地方的%path%。


3
投票

我将使用GetWindowsDirectory Win32 API获取当前的Windows目录,将System32附加到它,然后检查它是否存在。


2
投票

使用“windir”环境变量然后将“System32”附加到该路径的末尾可能更安全。有时窗口可能位于不同的文件夹或不同的驱动器下,因此“windir”会告诉您它在哪里。

据我所知,system32文件夹应该始终存在于windows文件夹下。


0
投票

只是一个FYI,但在终端服务器环境(即Citrix)中,GetWindowsDirectory()可能会为远程用户返回一个唯一的路径。

link text

随着越来越多的公司使用虚拟化桌面,开发人员需要牢记这一点。

© www.soinside.com 2019 - 2024. All rights reserved.