public static PatchFinder Create(String fileName) { if (!File.Exists(fileName)) { throw new FileNotFoundException("Specified filed does not exist", fileName); } Version osv = Environment.OSVersion.Version; MachineType type = Miscellaneous.GetMachineType(fileName); switch (type) { case MachineType.I386: if (osv.Major == 5 && osv.Minor >= 1) { // XP x86 // WS2003 x86 return(new UXThemeXP32Finder(fileName)); } else if (osv.Major == 6) { // Vista / Win7 x86 return(new UXThemeVi32Finder(fileName)); } break; case MachineType.Amd64: if (osv.Major == 5 && osv.Minor == 2) { //XP / WS2003 x64 return(new UXThemeXP64Finder(fileName)); } else if (osv.Major == 6) { // Vista / Win7 x64 return(new UXThemeVi64Finder(fileName)); } break; } return(null); }
private static void AddPEMachineTypeToSymbols(String fileName, Dictionary <String, Double> symbols) { Anolis.Core.Native.MachineType type = Miscellaneous.GetMachineType(fileName); switch (type) { case Anolis.Core.Native.MachineType.Amd64: symbols.Add("peType", 64); break; case Anolis.Core.Native.MachineType.I386: symbols.Add("peType", 86); break; default: symbols.Add("peType", -1); break; } }