【发布时间】:2010-07-30 16:47:44
【问题描述】:
我对前 2 个参数、模块和命令行感到困惑。我发现除非我同时填充两者,否则它无法正常工作,而且文档似乎另有说明。
我想调用“testApp.exe param1=123”
我发现唯一可行的方法是:
CreateProcess("testApp.exe","testApp.exe param1=123",...
我认为其中任何一个都应该有效,但到目前为止还没有运气:
CreateProcess("testApp.exe","param1=123",...
CreateProcess(NULL,"testApp.exe param1=123",...
我已经阅读了几次 msdn 文档,所以我错过了什么?
【问题讨论】:
-
那是您的 exact 代码与确切的命令行吗? (顺便说一句,请注意命令行不能是字符串文字;参数必须是非
const字符串。) -
The Unicode version of this function, CreateProcessW, can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation. -
您认为自己安全是因为您没有使用 Unicode 版本吗?这仍然不是一个好主意。 (这是一般性建议,而不是对您问题的回答。)
-
重点是我不认为你的第一条评论是正确的“不能是字符串文字”,除非你限定它。
-
好的,好的。我应该说它“不应该是字符串文字”。然而,微软表示 Unicode 版本会改变字符串,但它并没有承诺 ANSI 版本不会。无论如何,如果您将来使用 UNICODE 进行编译,这是一个非常糟糕的主意。