c++ - 获取系统 TEMP 变量的路径
问题描述
我想在我的 C++ 代码中访问系统 TEMP 变量。当我使用 getenv("TEMP") 时,它会在用户变量(“C:\Users\xxxx\AppData\Local\Temp\”)中给出 TEMP 的值,而不是系统变量。
同样,GetTempPath 也返回 C:\Users\xxxx\AppData\Local\Temp\,因为我想从系统 (C:\Windows\Temp) 获得 TEMP 变量的路径。
如何得到它?
解决方案
该%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
推荐阅读
- ios - react-native-code-push 在本机设置中不起作用
- json - 使用 URLSession 从服务器获取数据
- php - 是否有监控多个基于作曲家的安装的工具?
- dhtmlx-scheduler - DHTMLX 调度程序时间线从服务器刷新数据
- python - PyAudio 在一个线程中播放连续流并让改变频率
- flutter - 抛出异常:NoSuchMethodError:getter 'the0' was called on null
- c# - 如何将整个datagridview导出成word文档(在C#中使用office word interop DLL)
- python - pandas 为多类列绘制 CDF
- ubuntu - MPI 和 libevent 混合代码导致 Ubuntu 上的分段错误
- java - 按下按钮时触发要执行的操作