当前位置:  开发笔记 > 编程语言 > 正文

路径和CreateProcess

如何解决《路径和CreateProcess》经验,为你挑选了1个好方法。

我有一个关于我滥用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默认情况下仅对最终文件夹检查读访问权限.)



1> Simon Buchan..:

正如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默认情况下仅对最终文件夹检查读访问权限.)

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有