【问题标题】:Windows user home folder in C (MinGW)C (MinGW) 中的 Windows 用户主文件夹
【发布时间】:2011-02-18 10:17:49
【问题描述】:

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

目前我已经修复了诸如missing posix features 之类的“硬”部分。

应用程序现在可以在 Windows 上编译、链接和工作(除了 fork() 东西,稍后将替换为 Windows 服务代码)。

我现在唯一遇到的问题是在 MSYS shell 中一切正常(这为我映射了 unix 路径)。

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

我正在寻找在我的#ifdef 内容中设置 Windows 用户主页的最佳方式。

我在某处读到过%USERPROFILE%,但work 似乎没有。

【问题讨论】:

  • %USERPROFILE% 应该是正确的,至少在 Windows 7 上是正确的。在其他操作系统上可能会有所不同。
  • 听起来很奇怪,因为环境变量 USERPROFILE 应该包含主文件夹。
  • %USERPROFILE% 工作正常,但在程序中您应该使用SHGetFolderLocation 或其朋友之一。如果你不能让%USERPROFILE% 工作,那么你做错了。
  • @the JinX 在我看来,您似乎对 Windows 了解不多,并且对 Windows 大喊大叫,而实际上您应该专注于将自己对这个特定平台的了解提升到新的水平。
  • Windows SUA 与 POSIX 兼容 - 常规 Windows 不兼容,也不会尝试这样做。

标签: c windows mingw msys


【解决方案1】:

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

【讨论】:

  • 会试试这些。希望我不需要 MSVC。 .
  • 查看 MSDN,我没有首先看到“哪些标头”部分,所以有点困惑,这让我认为它不适用于 MinGW。
  • 谢谢!这些让我找到了一些很好的例子,说明如何用 10 多行代码替换一个字符。又一个障碍..感谢所有相关人员..即使是无缘无故否决我的问题的人。
  • @the JinX 用粗俗的脏话没人喜欢。如果您不能遵守这一点,那么您最好在欢迎这种语言的论坛上发帖。尝试和适应有那么难吗?尤其是当您寻求帮助时。
【解决方案2】:

我认为您应该使用 SHGetFolderLocation API: http://msdn.microsoft.com/en-us/library/bb762180%28VS.85%29.aspx 还不够,您甚至应该检索用户文件夹的 ID,但是从上面的 doc 位置开始,您应该拥有所需的一切。 这应该适用于任何 Windows 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多