9

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

谢谢。哦哈德。

4

6 回答 6

24

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

简短的回答是使用 API 调用 GetSystemDirectory(),它将返回您所追求的路径。

更长的答案是问:你真的需要知道这个吗?如果您使用它将文件复制到 Windows 目录中,我建议您询问您是否真的要这样做。不鼓励复制到 Windows 目录,因为您可以很容易地弄乱其他应用程序。如果您使用路径来查找 DLL,为什么不直接依靠操作系统来找到合适的路径而不给出路径呢?如果您要深入研究操作系统文件的一部分,请考虑:这将来会起作用吗?一般来说,如果您希望您的程序在未来的 Windows 版本上运行,最好不要明确地在 Windows 目录中四处寻找。

于 2008-10-27T07:03:57.863 回答
17

不,你不能这样假设。

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

于 2008-10-27T06:45:09.850 回答
5

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

于 2008-10-27T06:42:17.173 回答
3

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

于 2008-10-27T06:42:58.263 回答
2

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

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

于 2008-10-27T06:36:30.057 回答
0

仅供参考,但在终端服务器环境(即 Citrix)中,GetWindowsDirectory() 可能会为远程用户返回唯一路径。

链接文本

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

于 2008-12-01T14:44:07.990 回答