0
4

2 回答 2

2

实际上,getenv它并不是一个 Windows API 函数。该函数由 C 运行时提供。如果您希望继续使用 C 运行时函数,那么getenv您应该使用 Unicode 版本,而不是使用_wgetenv.

Windows API 函数,它getenv_wgetenv包装,是GetEnvironmentVariable. 您同样可以使用该函数,但您必须确保在构建时以 Unicode 为目标,或GetEnvironmentVariableW显式调用 Unicode 版本。

这回答了你问的直接问题。但是,还值得指出的是,读取APPDATA变量并不是获取该信息的正确方法。您应该改为调用SHGetKnownFolderPathpass FOLDERID_RoamingAppData

于 2019-05-29T14:58:23.153 回答
1

在 Windows 中有什么替代 getenv 的方法吗?

获取用户文件夹最准确的方法APPDATA是直接询问操作系统,而不是查询调用进程的环境。

您可以SHGetFolderPathW()使用CSIDL_(LOCAL_)APPDATA.

在 Vista 及更高版本上,您可以(并且应该)交替使用SHGetKnownFolderPath()with FOLDERID_(Roaming|Local)AppData

于 2019-05-29T15:24:41.220 回答