C中的Windows用户主文件夹(MinGW)

C中的Windows用户主文件夹(MinGW),c,windows,mingw,msys,C,Windows,Mingw,Msys,我正在尝试将一个用C编写的应用程序从linux移植到windows 目前,我已经完成了像这样的“硬”部件的修复 该应用程序现在可以在Windows上编译、链接和工作(fork()内容除外,以后将用Windows服务代码替换) 我现在遇到的唯一问题是,在MSYS shell中,它可以正常工作(这为我映射了unix路径) 在MSYS外壳之外,它将无法工作,因为~不可用 我正在寻找在我的ifdef文件中设置windows用户主页的最佳方法 我在某个地方读到了%USERPROFILE%,但似乎没有。我认

我正在尝试将一个用C编写的应用程序从linux移植到windows

目前,我已经完成了像这样的“硬”部件的修复

该应用程序现在可以在Windows上编译、链接和工作(fork()内容除外,以后将用Windows服务代码替换)

我现在遇到的唯一问题是,在MSYS shell中,它可以正常工作(这为我映射了unix路径)

在MSYS外壳之外,它将无法工作,因为~不可用

我正在寻找在我的ifdef文件中设置windows用户主页的最佳方法


我在某个地方读到了
%USERPROFILE%
,但似乎没有。

我认为您应该使用SHGetFolderLocation API: 还不够,您甚至应该检索用户文件夹的ID,但是从上面的文档位置开始,您应该拥有所有需要的内容。
这应该适用于任何windows版本。

根据您的windows版本使用(Vista+)或
SHGetFolderPath

%USERPROFILE%
应该正确,至少在windows 7上是这样。在其他操作系统上可能会有所不同。听起来很奇怪,因为env变量USERPROFILE应该包含主文件夹。
%USERPROFILE%
工作正常,但在程序中,您应该使用
SHGetFolderLocation
或它的一个朋友。如果你不能让
%USERPROFILE%
正常工作,那你就是做错了。@JinX在我看来,你似乎对Windows不太了解,并且对Windows大喊大叫,而事实上你应该集中精力让自己对这个特定平台的知识达到最新水平。这是与POSIX兼容的-普通Windows不是,不要试图成为。我会试试这些。希望我不需要MSVC来做这个。看着MSDN,我没有先看到“whichheaders”部分,所以有点困惑,这让我觉得它对MinGW不太管用。谢谢!这些让我看到了一些关于如何用10多行代码替换一个字符的好例子。又遇到了一个障碍。。感谢所有参与的人。。即使是那个没理由否决我的问题的人。@JinX如果你用粗俗的脏话,没人喜欢它。如果你不能遵守这一点,那么你最好在一个欢迎这种语言的论坛上发帖。试着融入其中有那么难吗?尤其是当你请求帮助的时候。