Загрузка...

Проверка битности приложений

Тема в разделе C# создана пользователем r3xq1 24 янв 2022. 208 просмотров

  1. r3xq1
    r3xq1 Автор темы 24 янв 2022 https://t.me/DarkSoft_Extra 119 27 июл 2018
    Приложение позволяет узнать разрядности файла
    Создаём два класса: NativeMethods.cs и Structures.cs - очень удобно хранить в таких классах.
    Код взят от сюда

    C#
    namespace CheckBitApp
    {
    using System.Runtime.InteropServices;

    internal static class NativeMethods
    {
    [DllImport("kernel32.dll")]
    public static extern bool GetBinaryType(string lpApplicationName, out Structures.BinaryType lpBinaryType);
    }
    }
    C#
    namespace CheckBitApp
    {
    using System;

    public static class Structures
    {
    [Flags]
    public enum BinaryType : uint
    {
    x32 = 0, // SCS_32BIT_BINARY - 32-разрядное приложение для Windows
    x64 = 6, // SCS_64BIT_BINARY - 64-битное приложение для Windows.
    SCS_DOS_BINARY = 1, // Приложение на базе MS-DOS.
    SCS_OS216_BINARY = 5, // 16-разрядное приложение на базе OS/2.
    SCS_PIF_BINARY = 3, // Файл PIF, выполняющий приложение на базе MS-DOS.
    SCS_POSIX_BINARY = 4, // Приложение на основе POSIX
    SCS_WOW_BINARY = 2 // 16-разрядное приложение для Windows.
    }
    }
    }
    И вызов в главной форме

    C#
    namespace CheckBitApp
    {
    using System;
    using System.IO;

    public static class Program
    {
    [STAThread]
    public static void Main(string[] args)
    {
    if (NativeMethods.GetBinaryType(args[0], out Structures.BinaryType bt))
    {
    Console.Out.WriteLine($"Работает в {IntPtr.Size * 8}-битном режиме.");
    Console.Out.WriteLine($"Битность файла {Path.GetFileName(args[0])}: {bt}");
    }
    else
    {
    throw new ApplicationException($"Не удалось прочитать двоичный тип из файла: {Path.GetFileName(args[0])}");
    }
    Console.Read();
    }
    }
    }
    Перетаскиваем приложение на наше, запускается консоль и выводит информацию))

    Крч кому надо - пользуйтесь.
     
    24 янв 2022 Изменено
  2. Rinoku
    Rinoku 24 янв 2022 За Кернел, Царя и Отечество! 1190 17 янв 2020
    А зачем? 32 битки спокойно воркают на 64бит, а те кто на 32 битке сидят и так качают только 32bit приложухи
     
    24 янв 2022 Изменено
    1. r3xq1 Автор темы
      Rinoku, ты сначала почитай внимательно код, прежде чем задавать глупые вопросы по типу: "А зачем, а для чего и прочее"
Загрузка...
Top