getBinaryTypeA 函数 (winbase.h)

确定文件是否为可执行 (.exe) 文件,如果是,则由哪个子系统运行可执行文件。

语法

BOOL GetBinaryTypeA(
  [in]  LPCSTR  lpApplicationName,
  [out] LPDWORD lpBinaryType
);

参数

[in] lpApplicationName

要确定其可执行类型的文件的完整路径。

默认情况下,名称限制为MAX_PATH个字符。 若要将此限制扩展到 32,767 个宽字符,请在路径前面添加“\\?\”。 有关详细信息,请参阅命名文件、路径和命名空间

提示

从 Windows 10 版本 1607 开始,可以选择删除MAX_PATH限制,而无需在前面添加“\\?\”。 有关详细信息,请参阅 命名文件、路径和命名空间 的“最大路径长度限制”部分。

[out] lpBinaryType

指向变量的指针,用于接收由 lpApplicationName 指定的文件的可执行文件类型的相关信息。 定义了以下常量。

含义
SCS_32BIT_BINARY
0
基于 32 位 Windows 的应用程序
SCS_64BIT_BINARY
6
基于 64 位 Windows 的应用程序。
SCS_DOS_BINARY
1
基于 MS-DOS 的应用程序
SCS_OS216_BINARY
5
基于 16 位 OS/2 的应用程序
SCS_PIF_BINARY
3
执行基于 MS-DOS 的应用程序的 PIF 文件
SCS_POSIX_BINARY
4
基于 POSIX 的应用程序
SCS_WOW_BINARY
2
基于 16 位 Windows 的应用程序

返回值

如果文件是可执行文件,则返回值为非零值。 函数设置 lpBinaryType 指向的变量,以指示文件的可执行类型。

如果文件不可执行,或者函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 如果文件是 DLL,则会 ERROR_BAD_EXE_FORMAT最后一个错误代码。

备注

作为替代方法,可以通过调用 SHGetFileInfo 函数,在 uFlags 参数中传递 SHGFI_EXETYPE 标志来获取相同的信息。

符号链接行为 - 如果路径指向符号链接,则使用目标文件。

在 Windows 8 和 Windows Server 2012 中,以下技术支持此函数。

技术 支持
(SMB) 3.0 协议的服务器消息块
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CsvFS)
弹性文件系统 (ReFS)
 

注意

winbase.h 标头将 GetBinaryType 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

文件管理功能

SHGetFileInfo

符号链接