PS C:\users\bion\Desktop> type test.cs
using System;
using System.Runtime.InteropServices;
using System.IO;
[Flags]
public enum ExeType
{
None = 0,
WinNT = 0x04000000,
PE = ((int)'P') | ((int)'E' << 8),
NE = ((int)'N') | ((int)'E' << 8),
MZ = ((int)'M') | ((int)'Z' << 8),
}
public static class Program
{
[DllImport("shell32.dll", CharSet=CharSet.Auto, EntryPoint="SHGetFileInfo")]
public static extern ExeType GetExeType(string pszPath, uint dwFileAttributes = 0, IntPtr
psfi = default(IntPtr), uint cbFileInfo = 0, uint uFlags = 0x2000);
public static void Main()
{
// Clearly a console application:
Test("C:\\Windows\\System32\\cmd.exe");
// Clearly a windowed application:
Test("C:\\Windows\\System32\\Notepad.exe");
}
private static void Test(string exe)
{
string shortName = Path.GetFileName(exe);
int result = (int)GetExeType(exe);
Console.WriteLine(shortName + " -> " + result.ToString("X8"));
}
}
PS C:\users\bion\Desktop> csc test.cs
Microsoft (R) Visual C# Compiler version 12.0.30723.0
for C# 5
Copyright (C) Microsoft Corporation. All rights reserved.
PS C:\users\bion\Desktop> .\test.exe
cmd.exe -> 00004550
Notepad.exe -> 06044550
PS C:\users\bion\Desktop>
UFMgQzpcdXNlcnNcYmlvblxEZXNrdG9wPiB0eXBlIHRlc3QuY3MKdXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uUnVudGltZS5JbnRlcm9wU2VydmljZXM7CnVzaW5nIFN5c3RlbS5JTzsKCltGbGFnc10KcHVibGljIGVudW0gRXhlVHlwZQp7CiAgICBOb25lID0gMCwKICAgIFdpbk5UID0gMHgwNDAwMDAwMCwKICAgIFBFID0gKChpbnQpJ1AnKSB8ICgoaW50KSdFJyA8PCA4KSwKICAgIE5FID0gKChpbnQpJ04nKSB8ICgoaW50KSdFJyA8PCA4KSwKICAgIE1aID0gKChpbnQpJ00nKSB8ICgoaW50KSdaJyA8PCA4KSwKfQoKcHVibGljIHN0YXRpYyBjbGFzcyBQcm9ncmFtCnsKICAgIFtEbGxJbXBvcnQoInNoZWxsMzIuZGxsIiwgQ2hhclNldD1DaGFyU2V0LkF1dG8sIEVudHJ5UG9pbnQ9IlNIR2V0RmlsZUluZm8iKV0KICAgIHB1YmxpYyBzdGF0aWMgZXh0ZXJuIEV4ZVR5cGUgR2V0RXhlVHlwZShzdHJpbmcgcHN6UGF0aCwgdWludCBkd0ZpbGVBdHRyaWJ1dGVzID0gMCwgSW50UHRyCnBzZmkgPSBkZWZhdWx0KEludFB0ciksIHVpbnQgY2JGaWxlSW5mbyA9IDAsIHVpbnQgdUZsYWdzID0gMHgyMDAwKTsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAgICAgLy8gQ2xlYXJseSBhIGNvbnNvbGUgYXBwbGljYXRpb246CiAgICAgICAgVGVzdCgiQzpcXFdpbmRvd3NcXFN5c3RlbTMyXFxjbWQuZXhlIik7CiAgICAgICAgLy8gQ2xlYXJseSBhIHdpbmRvd2VkIGFwcGxpY2F0aW9uOgogICAgICAgIFRlc3QoIkM6XFxXaW5kb3dzXFxTeXN0ZW0zMlxcTm90ZXBhZC5leGUiKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIFRlc3Qoc3RyaW5nIGV4ZSkKICAgIHsKICAgICAgICBzdHJpbmcgc2hvcnROYW1lID0gUGF0aC5HZXRGaWxlTmFtZShleGUpOwogICAgICAgIGludCByZXN1bHQgPSAoaW50KUdldEV4ZVR5cGUoZXhlKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZShzaG9ydE5hbWUgKyAiIC0+ICIgKyByZXN1bHQuVG9TdHJpbmcoIlg4IikpOwogICAgfQp9ClBTIEM6XHVzZXJzXGJpb25cRGVza3RvcD4gY3NjIHRlc3QuY3MKTWljcm9zb2Z0IChSKSBWaXN1YWwgQyMgQ29tcGlsZXIgdmVyc2lvbiAxMi4wLjMwNzIzLjAKZm9yIEMjIDUKQ29weXJpZ2h0IChDKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgpQUyBDOlx1c2Vyc1xiaW9uXERlc2t0b3A+IC5cdGVzdC5leGUKY21kLmV4ZSAtPiAwMDAwNDU1MApOb3RlcGFkLmV4ZSAtPiAwNjA0NDU1MApQUyBDOlx1c2Vyc1xiaW9uXERlc2t0b3A+