我正在调用CreateProcess来启动cl.exe(Win7 64位上的VS2010).我收到以下错误..
cl:命令行错误D8037:无法创建临时il文件; 清除旧的il文件的临时目录
在cmd窗口中使用相同的环境变量调用相同的命令行会成功.我检查了临时目录,没有旧文件.看起来创建的进程没有写权限.我一直在尝试不同的方法.. CreateProcessAsUser,设置安全属性以授予Everyone用户组的所有标准权限,包括和不包含继承句柄等.它们似乎都没有解决它.
这是基本代码......
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof( SECURITY_ATTRIBUTES );
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = NULL;
const char* _szSourceFile = "c:\\temp\\test\\src\\foo.cpp";
char szOptions[ 2048 ];
sprintf_s( szOptions,
"c:\\temp\\compile\\cl.exe "
"/Gd "
"/Fo\"c:\\temp\\test\\out\\\" "
"/Fe\"c:\\temp\\test\\out\\\" "
"/Fd\"c:\\temp\\test\\out\\\" "
"/D \"WIN32\" "
"/D \"_DEBUG\" "
"/D \"_WINDOWS\" "
"/D \"_USRDLL\" "
"/D \"_WINDLL\" "
"/D \"_MBCS\" "
"/I\"c:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Include\" "
"/MDd "
"/I\"c:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\include\" "
"/LDd "
"%s "
"c:\\temp\\test\\lib\\Uuid.Lib "
"c:\\temp\\test\\lib\\oldnames.lib …Run Code Online (Sandbox Code Playgroud)