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 回答