【发布时间】:2014-05-23 17:43:39
【问题描述】:
如何找到运行可执行文件的当前驱动器名称?
我想使用 WritePrivateProfileString() 将字符串保存在 .ini 文件中。我想让文件名通用,因为硬编码完整路径或驱动器名称不是一个好主意。
谁能告诉我如何检索当前驱动器名称以在此 API 中使用。
我正在使用这样的 API:-
WritePrivateProfileString(_T("device"), _T("i2c_address"), temp, _T("D:\log.ini"));
我不想在这里对 D 进行硬编码,请告诉我如何使这个通用化。
【问题讨论】:
-
不要保存在任何驱动器的根目录中。您想要的函数是
SHGetKnownFolderPath,其中KNOWNFOLDERID是FOLDERID_ProgramData。这将为您提供应用程序数据文件夹的路径,您应该在其中存储应用程序数据(如 INI 文件)。搜索SO关于如何使用这个的问题,已经有很多了。 -
WritePrivateProfileString(_T("device"), _T("i2c_address"), temp, _T("D:\log.ini"));不会将 INI 文件保存在根目录中,这样 INI 文件就会存储在我的应用程序可执行文件所在的“D”驱动器的目录中。我只想知道如何从应用程序路径中获取第一个字母
-
我比较确定这不是正确的。如果以
D:\log.ini为路径调用函数,它将保存在D:\log.ini(驱动器D:的根目录),而不是应用程序的目录。但是,如果您传递相对路径(如log.ini),它将重定向到注册表。您需要一个绝对路径,例如使用GetModuleFileName获得的路径。但随后您需要使用PathRemoveFileSpec之类的方式删除EXE 名称。然后您将使用PathAppend将该目录路径与您的文件名log.ini连接起来。