首页 > 解决方案 > 获取系统 TEMP 变量的路径

问题描述

我想在我的 C++ 代码中访问系统 TEMP 变量。当我使用 getenv("TEMP") 时,它会在用户变量(“C:\Users\xxxx\AppData\Local\Temp\”)中给出 TEMP 的值,而不是系统变量。

同样,GetTempPath 也返回 C:\Users\xxxx\AppData\Local\Temp\,因为我想从系统 (C:\Windows\Temp) 获得 TEMP 变量的路径。

如何得到它?

标签: c++windowswinapi

解决方案


%USERPROFILE%\AppData\Local\Temp\路径TEMP您在大多数情况下应该使用的正确文件夹。这是 API 喜欢getenv("%TEMP%"|"%TMP%")并按GetTempPath()用户设计返回的文件夹。您根本不应该使用该C:\Windows\Temp\文件夹,因为这是一个供 Windows 内部使用的系统文件夹。

话虽这么说,如果您真的想获取系统%TEMP%路径,那么您可以:

  • 使用getenv("%WINDIR%"|"%SYSTEMROOT%")GetWindowsDirectory()SHGetFolderPath(CSIDL_WINDOWS)或获取 Windows 安装文件夹的路径SHGetKnownFolderPath(FOLDERID_Windows),然后附加Temp到该路径的末尾。

  • 读取注册表项中的"TEMP""TMP"值。HKLM\System\CurrentControlSet\Control\Session Manager\Environment


推荐阅读