如何获取系统盘符?

Posted

技术标签:

【中文标题】如何获取系统盘符?【英文标题】:How can I get the system drive letter? 【发布时间】:2010-10-23 01:20:00 【问题描述】:

如何在 Windows 操作系统上找到主硬盘的驱动盘符?

即带有Program FilesSystem32等的驱动器。

【问题讨论】:

不要假设程序将在“\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。它在很大程度上解释了如何深入获取系统信息。信息量很大。

【讨论】:

你需要用代码标签和换行符来格式化答案。

以上是关于如何获取系统盘符?的主要内容,如果未能解决你的问题,请参考以下文章

VC++获取电脑的各个磁盘盘符及容量信息(附源码)

如何用VB获取盘符,并把C:\1.exe拷贝到每个盘里

在MFC中知道U盘盘符如何获取PID,VID

java 如何获得磁盘名称

win7与ubuntu windows多系统下如何恢复引导分区?引导进入分区菜单

修改系统盘符