using Pilz.Runtime;
using Pilz.Win32.Native;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;

namespace Pilz.IO
{
    public static class Extensions
    {
        static readonly int MAX_PATH = 255;

        public static string GetExecutablePath(bool checkRealOS = false)
        {
            if (RuntimeInformationsEx.IsOSPlatform(OSType.Windows, checkRealOS))
            {
                var sb = new StringBuilder(MAX_PATH);
                Kernel32.GetModuleFileName(IntPtr.Zero, sb, MAX_PATH);
                return sb.ToString();
            }
            else
                return Process.GetCurrentProcess().MainModule.FileName;
        }
    }
}
