问问题
365 次
2 回答
2
实际上,getenv
它并不是一个 Windows API 函数。该函数由 C 运行时提供。如果您希望继续使用 C 运行时函数,那么getenv
您应该使用 Unicode 版本,而不是使用_wgetenv
.
Windows API 函数,它getenv
和_wgetenv
包装,是GetEnvironmentVariable
. 您同样可以使用该函数,但您必须确保在构建时以 Unicode 为目标,或GetEnvironmentVariableW
显式调用 Unicode 版本。
这回答了你问的直接问题。但是,还值得指出的是,读取APPDATA
变量并不是获取该信息的正确方法。您应该改为调用SHGetKnownFolderPath
pass 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 回答