Мне нужно запустить исполняемый файл, рабочий каталог которого установлен с использованием переменной окружения. Например, мне нужно было сделать что-то вроде:Использование переменных окружения в аргументе lpCurrentDirectory для функции CreateProcess
CreateProcess(exe, args, NULL, NULL, FALSE, 0, NULL, TEXT("%CUSTOM_DIR%"), &si, &pi);
Однако это последовательно возвращает ложь с ERROR_DIRECTORY
(267) установлен в качестве последней ошибки. Я проверил, что переменная CUSTOM_DIR
среда действительно устанавливается с кодом:
auto environment = GetEnvironmentStrings();
auto env = environment;
while (*env)
{
printf("%ls\n", env);
env += wcslen(env) + 1;
}
FreeEnvironmentStrings(environment);
Как:
TCHAR szVal[1024];
GetEnvironmentVariable(TEXT("CUSTOM_DIR"), szVal, 1024);
printf("%ls\n", szVal);
После поиска немного на MSDN, а также SO, я не был способный найти что-то, что связано с этим вопросом. Единственный способ, которым я могу сделать это сейчас, - это ужасное решение разбора строки и выполнения самой замены (yuk!).
Вам нужно прочитать вопрос, чтобы ответить на вопрос. Я передаю имя переменной среды в 'lpCurrentDirectory', а не' lpEnvironment' ... Если 'CreateProcess' (или другая функция) не будет делать замену для меня, это круто, я могу сделать это сам (неохотно). Ваш ответ не затрагивает вопрос, хотя ... – Duncan
Да, мне нужно прочитать вопрос !! К сожалению. –