// I have a permission to create a file to Program Files
const std::wstring sFileName = L"%ProgramFiles%\\aaa.txt";
HANDLE h = CreateFileW(
sFileName.c_str(),
GENERIC_READ,
FILE_SHARE_DELETE,
0,
CREATE_ALWAYS,
0,
0);
// INVALID_HANDLE_VALUE with ERROR_PATH_NOT_FOUND
我预计它会使 C:\ Program Files \ aaa.txt 或 C:\ Program Files(x86)\ aaa.txt 取决于Os'环境。但它没有用。
怎么了?如何在本机代码中使用环境变量?
答案 0 :(得分:4)
尝试使用GetEnvironmentVariable
功能
答案 1 :(得分:4)
您需要显式扩展环境变量。一种方法是使用Win32 API的ExpandEnvironmentStrings或ExpandEnvironmentStringsForUser
请参阅:
http://msdn.microsoft.com/en-us/library/ms724265(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/bb762275(v=vs.85).aspx