我注意到了这种行为:
当前目录中有2个可执行文件,名为' somefile'和' somefile.abc'。
CreateProcessA(NULL, "somefile", ...)
- 失败,错误代码为2(ERROR_FILE_NOT_FOUND
)
CreateProcessA(NULL, "somefile.abc", ...)
- 作品
CreateProcessA(NULL, ".\\somefile", ...)
- 作品
CreateProcessA(NULL, ".\\somefile.abc", ...)
- 作品
所以,它看起来像"。\"当且仅当文件没有扩展名时才是强制性的。 这种行为背后有逻辑吗?
答案 0 :(得分:7)
来自MSDN:
如果文件名不包含扩展名,则附加.exe。因此,如果文件扩展名为.com,则此参数必须包含.com扩展名。如果文件名以句点(。)结尾但没有扩展名,或者文件名包含路径,则不会附加.exe。
我不知道所记录的行为是否应该被称为“怪异”。