1

アプリケーションのデフォルトのインストール場所を予測できるようにしたいと考えています。64 ビット マシンでは、32 ビット アプリケーションの場合は「Program Files (x86)」にインストールされ、64 ビット アプリケーションの場合は「Program Files」にインストールされます。

私の目標は、アプリケーションをデフォルトの場所にインストールし、インストールがうまくいったかどうかを検証することです。しかし、そのためには、それがどこにインストールされるかを知る必要があります。アプリケーションがどのアーキテクチャ用に構築されているかがわかれば、それが私の目的に役立つと思います。

4

2 に答える 2

2

外部ツールを使用できる場合、GNUfileは最も用途の広いソリューションです。しかし、この目的のためには少しやり過ぎかもしれません。他の代替手段はDependency Walker、Sysinternals のSigcheck、MSVC の dumpbin または corflags です...しかし、多くの人を驚かせる可能性があるのは7zipです。オプションfileで使用できる小さな-like ユーティリティが内部にありますl

C:\>7z l "C:\Program Files (x86)\Windows Photo Viewer\ImagingDevices.exe" | findstr CPU
CPU = x86

C:\>7z l "C:\Program Files\Windows Photo Viewer\ImagingDevices.exe" | findstr CPU
CPU = x64

自分で確認する必要がある場合は、ファイルのオフセット 0x3C で 2 バイトを読み取ります。次に、この値に 4 を追加し、そのオフセットで 2 バイトを読み取ると、アーキテクチャが示されます。たとえば、次の例では、ファイルのオフセット 0x3C に 0x00E0 が含まれています。オフセット 0x00E0 + 4 = 0x00E4 には、64 ビット バイナリを意味する0x8664が含まれます。32 ビット x86 バイナリの場合、0x014Cが含まれます。

PE ファイルをテキストとして開く

以下のリンクで見つけることができる他の方法があります。その目的で利用できる他の PowerShell および VBS スクリプトもあります。

于 2014-02-14T07:21:58.070 に答える
1

Windows 用にダウンロードfileして、Windows 上のファイルの詳細を確認します。

http://gnuwin32.sourceforge.net/packages/file.htm

次に、Windows コマンド ライン経由で次のように入力します。

C:\> "C:\Program Files\GnuWin32\bin\file" name-of-file.exe
name-of-file.exe executable for MS Windows (GUI) Intel 80386 32-bit

このコマンドの戻り値は、使用しているどの開発プラットフォームからでも取得できるはずです。

于 2009-12-07T07:36:56.420 に答える