在本机代码中使用Windows环境变量

时间:2011-01-25 01:02:54

标签: windows winapi environment-variables

// 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'环境。但它没有用。
怎么了?如何在本机代码中使用环境变量?

2 个答案:

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