CreateProcess与没有扩展名的文件的奇怪行为

时间:2017-03-31 11:18:20

标签: winapi

我注意到了这种行为:

当前目录中有2个可执行文件,名为' somefile'和' somefile.abc'。

CreateProcessA(NULL, "somefile", ...) - 失败,错误代码为2(ERROR_FILE_NOT_FOUND

CreateProcessA(NULL, "somefile.abc", ...) - 作品

CreateProcessA(NULL, ".\\somefile", ...) - 作品

CreateProcessA(NULL, ".\\somefile.abc", ...) - 作品

所以,它看起来像"。\"当且仅当文件没有扩展名时才是强制性的。 这种行为背后有逻辑吗?

1 个答案:

答案 0 :(得分:7)

来自MSDN

  

如果文件名不包含扩展名,则附加.exe。因此,如果文件扩展名为.com,则此参数必须包含.com扩展名。如果文件名以句点(。)结尾但没有扩展名,或者文件名包含路径,则不会附加.exe。

我不知道所记录的行为是否应该被称为“怪异”。