2016-09-14 10 views

答えて

2

多くの先進的なPowerShellパーサーはPE headerです。

function Is64bit([string]$path) { 
    try { 
     $stream = [IO.File]::OpenRead($path) 
    } catch { 
     throw "Cannot open file $path" 
    } 
    $reader = [IO.BinaryReader]$stream 

    if ($reader.ReadChars(2) -join '' -ne 'MZ') { throw 'Not an executable' } 

    $stream.position = 0x3C 
    $stream.position = $reader.ReadUInt32() # go to COFF 
    if ($reader.ReadUInt32() -ne 0x00004550) { throw 'Not a PE executable' } 

    return $reader.ReadUInt16() -eq 0x8664 # machine type 
} 

使用法:

Is64bit C:\Windows\explorer.exe 

ここだけMachine Typeフィールドを読み込み、簡単な関数です

関連する問題