我需要啓動一個可執行文件,其工作目錄使用環境變量進行設置。例如,我需要做的是這樣的:將lpCurrentDirectory參數中的環境變量用於CreateProcess函數
CreateProcess(exe, args, NULL, NULL, FALSE, 0, NULL, TEXT("%CUSTOM_DIR%"), &si, &pi);
然而,這始終返回false與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
是的,我確實需要閱讀這個問題!哎呀。 –