如何在 Windows 上获取用户主目录?

新手上路,请多包涵

我正在开发一个跨平台库,旨在从用户的主目录加载配置文件。这个想法是在不编辑代码的情况下自动提供配置参数。

该库可用于桌面应用程序或守护程序/服务。在(我假设)大多数 Unix 环境中,我可以使用 getpwuid() 来获取用户的主目录。在 Windows SO 告诉我 我可以使用 SHGetKnownFolderPath 但它的文档说它只用于桌面应用程序。有没有办法在 Windows 上为运行服务的用户获取此路径?

原文由 ruipacheco 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
1 个回答

对于控制台应用程序,最简单的方法是检索 USERPROFILE 环境变量或连接 HOMEDRIVEHOMEPATH 环境变量的值。

使用标准库中的 getenv() 函数: https ://msdn.microsoft.com/en-us/library/tehxacec.aspx

示例程序:

 #include <stdlib.h>
#include <stdio.h>

int main(int argc, char** argv) {
    printf("USERPROFILE = %s\n", getenv("USERPROFILE"));
    printf("HOMEDRIVE   = %s\n", getenv("HOMEDRIVE"));
    printf("HOMEPATH    = %s\n", getenv("HOMEPATH"));
    return 0;
}

输出:

 USERPROFILE = C:\Users\myuser
HOMEDRIVE   = C:
HOMEPATH    = \Users\myuser

原文由 Paul 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题