首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找当前用户名和系统盘?

如何查找当前用户名和系统盘?
EN

Stack Overflow用户
提问于 2021-07-15 23:29:19
回答 1查看 51关注 0票数 0

我正在尝试创建一个简单的控制台应用程序,只清理%temp%文件。那么,如何在临时文件目录中找到用户名和系统盘进行输入呢?

这是一个字符串变量,我计划在其中存储%temp%目录:

代码语言:javascript
复制
string tempDir = sysDisk << ":/Users/" << userName << "AppData/Local/Temp/"
EN

回答 1

Stack Overflow用户

发布于 2021-07-16 00:35:13

你做的这一切都错了。您根本不需要检索系统盘或用户名。特别是因为%temp%文件夹的位置是user-defined,所以不能保证它位于您尝试创建的路径中。而且Windows的USERSTEMP文件夹的位置已经随着时间的推移而改变了,所以将来可能还会改变。

正确的解决方案是询问操作系统用户的实际%temp%文件夹当前所在的确切位置。

例如,通过使用以下任一方法:

代码语言:javascript
复制
#include <cstdlib>
std::string tempDir = std::getenv("TEMP");

代码语言:javascript
复制
#include <filesystem>
std::string tempDir = std::filesystem::temp_directory_path().string();

或者,使用Win32应用编程接口函数:

代码语言:javascript
复制
#include <windows.h>
char path[MAX_PATH] = {};
DWORD len = GetTempPath(path, MAX_PATH);
std::string tempDir(path, len);

代码语言:javascript
复制
#include <windows.h>
char path[MAX_PATH] = {};
DWORD len = GetEnvironmentVariable("TEMP", path, MAX_PATH);
std::string tempDir(path, len);

代码语言:javascript
复制
#include <windows.h>
char path[MAX_PATH] = {};
DWORD len = ExpandEnvironmentStrings("%TEMP%", path, MAX_PATH);
std::string tempDir(path, len-1);
// This would be useful when dealing with individual filenames, eg:
// ExpandEnvironmentStrings("%TEMP%\filename.ext", path, MAX_PATH);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68396672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档