Использование переменной среды Windows в собственном коде - PullRequest
2 голосов
/ 25 января 2011
// 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 ]

4 голосов
/ 25 января 2011

Вам необходимо явно развернуть переменные окружения. Одним из способов является использование 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

4 голосов
/ 25 января 2011

попробуйте использовать функцию GetEnvironmentVariable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...