首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Windows上获取用户主目录?

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

Stack Overflow用户
提问于 2017-03-09 21:08:29
回答 4查看 18.4K关注 0票数 5

我正在开发一个跨平台库,用于从用户的主目录加载配置文件。其思想是自动提供配置参数,而无需编辑代码。

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

EN

回答 4

Stack Overflow用户

发布于 2017-03-10 00:42:33

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

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

示例程序:

代码语言:javascript
运行
复制
#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;
}

输出:

代码语言:javascript
运行
复制
USERPROFILE = C:\Users\myuser
HOMEDRIVE   = C:
HOMEPATH    = \Users\myuser
票数 5
EN

Stack Overflow用户

发布于 2017-03-09 21:13:19

所以你想让用户主目录处于服务状态吗?-如果你想让它处于服务状态,你必须使用GetUserToken()来获取用户令牌,然后为CreateprocessAsUser()复制它们-否则我认为使用SHGetSpecialPath()SHGetTempPath()更好。

票数 0
EN

Stack Overflow用户

发布于 2017-03-09 23:39:27

您可以使用ExpandEnvironmentStrings(...)解析%HOMEPATH%

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42696260

复制
相关文章

相似问题

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