UEFI_isUEFIAvailable() private method

private UEFI_isUEFIAvailable ( ) : bool
return bool
Exemplo n.º 1
0
        Boolean RequirementsCheck()
        {
            /*
             * App is running as admin
             * Access to NVRAM Granted
             * System has UEFI
             * System is running Windows 8 or higher
             * System is running on Windows 64-bit
             * Target partition has enough space
             *
             */

            Log.write("=============[REQUIREMENTS CHECK]============");
            //
            //Administrator check
            //
            if (IsAdministrator())
            {
                Log.write("Administrator privilege ... ok");
            }
            else
            {
                Log.write("Administrator privilege ... fail");
                return(false);
            }
            //
            // 64-bit check
            //
            if (!Environment.Is64BitOperatingSystem)
            {
                Log.write("OS Type: ... fail");
                return(false);
            }
            //
            // OS Version Check
            //
            Log.write("OSVer: " + Environment.OSVersion.ToString());
            if (System.Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                switch (System.Environment.OSVersion.Version.Major)
                {
                case 6:
                    if (System.Environment.OSVersion.Version.Minor >= 2)
                    {
                        Log.write("OperatingSystem Version ... ok");
                    }
                    break;

                case 10:
                    Log.write("OperatingSystem Version ... ok");
                    break;

                default:
                    return(false);
                }
            }
            else
            {
                return(false);
            }

            //
            //Load UEFI Library
            //
            Handle = LoadLibrary(@"Win32UEFI.dll");
            if (Handle == IntPtr.Zero)
            {
                int errorCode = Marshal.GetLastWin32Error();
                Log.write(string.Format("Failed to load library (ErrorCode: {0})", errorCode));
                return(false);
            }

            //
            //NVRAM Access
            //
            if (ws.GetAccesstoNVRam())
            {
                Log.write("Windows Security: Access NVRAM Privilege ... ok");
            }
            else
            {
                Log.write("Windows Security: Access NVRAM Privilege ... Not All Set");
            }

            //
            //UEFI Check
            //
            if (UEFIWrapper.UEFI_isUEFIAvailable())
            {
                Log.write("System Firmware: UEFI");
            }
            else
            {
                Log.write("System Firmware: Other");
                return(false);
            }

            return(true);
        }