如何获取系统盘符?
Posted
技术标签:
【中文标题】如何获取系统盘符?【英文标题】:How can I get the system drive letter? 【发布时间】:2010-10-23 01:20:00 【问题描述】:如何在 Windows 操作系统上找到主硬盘的驱动盘符?
即带有Program Files
、System32
等的驱动器。
【问题讨论】:
不要假设程序将在“\Program Files”中,或在“\Windows\System32”中的系统文件 - 有 API 调用来检索这些和更多的确切路径...跨度> 你能给我一个这些 API 调用的例子,以便我研究它们吗?我想查找与程序相关的某些文件 msdn.microsoft.com/en-us/library/ms724373.aspx ... msdn.microsoft.com/en-us/library/bb762181.aspx 【参考方案1】:有一个名为SystemDrive
的环境变量设置为系统驱动器(令人惊讶的是)。 getenv()
电话是您获取它的方法。
char *sysDrive = getenv ("SystemDrive");
if (sysDrive == NULL)
// vote me down.
else
// vote me up and use it.
This page 列出了一系列可用的环境变量,如果您不能依赖系统驱动器上存在的特定目录。
或者,使用 Windows API 调用 SHGetSpecialFolderPath(),并传入正确的 CSIDL。那么你不应该依赖环境变量。
虽然请注意那些页面上这已被 Vista 中的其他功能取代(它应该仍然有效,因为此功能成为新功能的包装器)。
【讨论】:
【参考方案2】:API 调用GetWindowsDirectory 可能会有所帮助。您可以使用 API 进一步解析此信息以解析驱动器号信息。
【讨论】:
什么我可以使用 API 来“进一步解析”GetWindowsDirectory()
结果?
获取windows目录路径的首字母即可。【参考方案3】:
系统驱动
程序文件
系统根目录
风向
不要假设 Program Files 与 Windows 位于同一驱动器上。通常是这样。 通常。
【讨论】:
您应该提到大写字母是Windows环境变量的名称。【参考方案4】:请参阅 MSDN 上的 Getting System Information。它在很大程度上解释了如何深入获取系统信息。信息量很大。
【讨论】:
你需要用代码标签和换行符来格式化答案。以上是关于如何获取系统盘符?的主要内容,如果未能解决你的问题,请参考以下文章