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 [仅限桌面应用]
目标平台 窗户
标头 winbase.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

文件管理功能

SHGetFileInfo

符号链接