我有一个关于我滥用CreateProcess的症状的问题.我正在使用lpcommandline参数来提供我的可执行文件和参数的路径.我的误用是我没有用引号包围exe的路径.
我的问题是,为什么CreateProcess在大多数计算机上运行得很好而不是其他计算机呢?我知道这条路在大多数时间里都有空间,但是90%的XP机器都可以工作.我当然在10%的地方发现了我的问题.但是我想知道它不起作用的机器有什么不同?是否有任何人知道的设置或政策.是的,我将修复报价问题.只是好奇为什么这样的事情不会失败.
所以代码看起来如下所示,szCommandLine参数将如下所示.请注意exe的路径周围没有引号.
"C:\ Program Files\My Company\doit.exe parameter1 parameter2"
CreateProcess( NULL, szCommandLine, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi )
Simon Buchan.. 5
正如Martin York链接到暗示的文档一样,CreateProcess()具有一些用于使用pre-long-name程序进行反向compat的行为.
"c:\ program files\sub dir\program name arg1 arg2"将查找:
"c:\program.exe" files\sub dir\program name arg1 arg2 "c:\program files\sub.exe" dir\program name arg1 arg2 "c:\program files\sub dir\program.exe" name arg1 arg2 "c:\program files\sub dir\program name.exe" arg1 arg2
因此,如果存在这些文件中的任何一个,Windows将调用它们,而不是您的程序.此外,我假设如果您没有对这些可能匹配的任何文件夹的读访问权限,CreateProcess()可能会立即失败,而不是检查您是否已阅读以后可能的匹配.(Windows默认情况下仅对最终文件夹检查读访问权限.)
正如Martin York链接到暗示的文档一样,CreateProcess()具有一些用于使用pre-long-name程序进行反向compat的行为.
"c:\ program files\sub dir\program name arg1 arg2"将查找:
"c:\program.exe" files\sub dir\program name arg1 arg2 "c:\program files\sub.exe" dir\program name arg1 arg2 "c:\program files\sub dir\program.exe" name arg1 arg2 "c:\program files\sub dir\program name.exe" arg1 arg2
因此,如果存在这些文件中的任何一个,Windows将调用它们,而不是您的程序.此外,我假设如果您没有对这些可能匹配的任何文件夹的读访问权限,CreateProcess()可能会立即失败,而不是检查您是否已阅读以后可能的匹配.(Windows默认情况下仅对最终文件夹检查读访问权限.)