Win32API ファイルが実行可能であるか調べる GetBinaryType

ファイルが実行可能であるか調べるには、GetBinaryType関数を用いる。


  • GetBinaryTypeのプロトタイプ
  • BOOL GetBinaryType (
      LPCTSTR lpApplicationName,  // ファイルのフルパス
      LPDWORD lpBinaryType        // バイナリタイプ情報
    );


  • 使用例
  • #include <windows.h>
    #include <stdio.h>
    
    int main()
    {
      char lpBuffer[1024];
      GetSystemDirectory(lpBuffer, sizeof(lpBuffer)/sizeof(lpBuffer[0]));
      strcat(lpBuffer, "\\notepad.exe");
    
      DWORD dwBinaryType;
      if (!GetBinaryType(lpBuffer, &dwBinaryType)) {
        puts("GetBinaryType failed.");
        return 1;
      }
    
      switch (dwBinaryType) {
        case SCS_32BIT_BINARY:
          puts("Win32 ベースのアプリケーション");
          break;
    
        case SCS_DOS_BINARY:
          puts("MS-DOS ベースのアプリケーション");
          break;
    
        case SCS_OS216_BINARY:
          puts("6 ビット版 OS/2 ベースのアプリケーション");
          break;
    
        case SCS_PIF_BINARY:
          puts("MS-DOS ベースのアプリケーションを実行する PIF ファイル");
          break;
    
        case SCS_POSIX_BINARY:
          puts("POSIX ベースのアプリケーション");
          break;
    
        case SCS_WOW_BINARY:
          puts("16 ビット版 Windows ベースのアプリケーション");
          break;
    
        default:
          break;
      }
    
      return 0;
    }