Esempio n. 1
0
 public OSDependency(System.Deployment.Application.NativeMethods.OSVersionInfoEx osvi)
 {
     this.dwMajorVersion = osvi.dwMajorVersion;
     this.dwMinorVersion = osvi.dwMinorVersion;
     this.dwMajorVersion = osvi.dwBuildNumber;
     this.dwMajorVersion = osvi.wServicePackMajor;
     this.dwMajorVersion = osvi.wServicePackMinor;
     this.suiteName      = PlatformDetector.NameMap.MapMaskToName(osvi.wSuiteMask, PlatformDetector.Suites);
     this.productName    = PlatformDetector.NameMap.MapMaskToName(osvi.bProductType, PlatformDetector.Products);
 }
 public static bool VerifyOSDependency(ref OSDependency osd)
 {
     System.Deployment.Application.NativeMethods.OSVersionInfoEx ex;
     OperatingSystem oSVersion = Environment.OSVersion;
     if (oSVersion.Version.Major == 4L)
     {
         if (oSVersion.Version.Major < osd.dwMajorVersion)
         {
             return false;
         }
         return true;
     }
     ex = new System.Deployment.Application.NativeMethods.OSVersionInfoEx {
         dwOSVersionInfoSize = Marshal.SizeOf(ex),
         dwMajorVersion = osd.dwMajorVersion,
         dwMinorVersion = osd.dwMinorVersion,
         dwBuildNumber = osd.dwBuildNumber,
         dwPlatformId = 0,
         szCSDVersion = null,
         wServicePackMajor = osd.wServicePackMajor,
         wServicePackMinor = osd.wServicePackMinor,
         wSuiteMask = (osd.suiteName != null) ? ((ushort) NameMap.MapNameToMask(osd.suiteName, Suites)) : ((ushort) 0),
         bProductType = (osd.productName != null) ? ((byte) NameMap.MapNameToMask(osd.productName, Products)) : ((byte) 0),
         bReserved = 0
     };
     ulong conditionMask = 0L;
     uint dwTypeMask = (uint) ((((((2 | ((osd.dwMinorVersion != 0) ? 1 : 0)) | ((osd.dwBuildNumber != 0) ? 4 : 0)) | ((osd.suiteName != null) ? 0x40 : 0)) | ((osd.productName != null) ? 0x80 : 0)) | ((osd.wServicePackMajor != 0) ? 0x20 : 0)) | ((osd.wServicePackMinor != 0) ? 0x10 : 0));
     conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 2, 3);
     if (osd.dwMinorVersion != 0)
     {
         conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 1, 3);
     }
     if (osd.dwBuildNumber != 0)
     {
         conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 4, 3);
     }
     if (osd.suiteName != null)
     {
         conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x40, 6);
     }
     if (osd.productName != null)
     {
         conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x80, 1);
     }
     if (osd.wServicePackMajor != 0)
     {
         conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x20, 3);
     }
     if (osd.wServicePackMinor != 0)
     {
         conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x10, 3);
     }
     bool flag = System.Deployment.Application.NativeMethods.VerifyVersionInfo(ex, dwTypeMask, conditionMask);
     if (!flag)
     {
         int error = Marshal.GetLastWin32Error();
         if (error != 0x47e)
         {
             throw new Win32Exception(error);
         }
     }
     return flag;
 }
Esempio n. 3
0
        public static bool VerifyOSDependency(ref OSDependency osd)
        {
            System.Deployment.Application.NativeMethods.OSVersionInfoEx ex;
            OperatingSystem oSVersion = Environment.OSVersion;

            if (oSVersion.Version.Major == 4L)
            {
                if (oSVersion.Version.Major < osd.dwMajorVersion)
                {
                    return(false);
                }
                return(true);
            }
            ex = new System.Deployment.Application.NativeMethods.OSVersionInfoEx {
                dwOSVersionInfoSize = Marshal.SizeOf(ex),
                dwMajorVersion      = osd.dwMajorVersion,
                dwMinorVersion      = osd.dwMinorVersion,
                dwBuildNumber       = osd.dwBuildNumber,
                dwPlatformId        = 0,
                szCSDVersion        = null,
                wServicePackMajor   = osd.wServicePackMajor,
                wServicePackMinor   = osd.wServicePackMinor,
                wSuiteMask          = (osd.suiteName != null) ? ((ushort)NameMap.MapNameToMask(osd.suiteName, Suites)) : ((ushort)0),
                bProductType        = (osd.productName != null) ? ((byte)NameMap.MapNameToMask(osd.productName, Products)) : ((byte)0),
                bReserved           = 0
            };
            ulong conditionMask = 0L;
            uint  dwTypeMask    = (uint)((((((2 | ((osd.dwMinorVersion != 0) ? 1 : 0)) | ((osd.dwBuildNumber != 0) ? 4 : 0)) | ((osd.suiteName != null) ? 0x40 : 0)) | ((osd.productName != null) ? 0x80 : 0)) | ((osd.wServicePackMajor != 0) ? 0x20 : 0)) | ((osd.wServicePackMinor != 0) ? 0x10 : 0));

            conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 2, 3);
            if (osd.dwMinorVersion != 0)
            {
                conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 1, 3);
            }
            if (osd.dwBuildNumber != 0)
            {
                conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 4, 3);
            }
            if (osd.suiteName != null)
            {
                conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x40, 6);
            }
            if (osd.productName != null)
            {
                conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x80, 1);
            }
            if (osd.wServicePackMajor != 0)
            {
                conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x20, 3);
            }
            if (osd.wServicePackMinor != 0)
            {
                conditionMask = System.Deployment.Application.NativeMethods.VerSetConditionMask(conditionMask, 0x10, 3);
            }
            bool flag = System.Deployment.Application.NativeMethods.VerifyVersionInfo(ex, dwTypeMask, conditionMask);

            if (!flag)
            {
                int error = Marshal.GetLastWin32Error();
                if (error != 0x47e)
                {
                    throw new Win32Exception(error);
                }
            }
            return(flag);
        }