public static EnumWinVersion GetWinVersionNumber() { OperatingSystem os = Environment.OSVersion; EnumWinVersion versionNumber = EnumWinVersion.UNKNOWN; switch (os.Version.Major) { case 4: switch (os.Version.Minor) { case 0: versionNumber = EnumWinVersion.WIN95; break; case 10: versionNumber = EnumWinVersion.WIN98; break; case 90: versionNumber = EnumWinVersion.WINME; break; default: versionNumber = EnumWinVersion.WIN98; break; } break; case 5: switch (os.Version.Minor) { case 0: versionNumber = EnumWinVersion.WIN2000; break; case 1: versionNumber = EnumWinVersion.WINXP; break; case 2: versionNumber = EnumWinVersion.WIN2003; break; default: versionNumber = EnumWinVersion.WINXP; break; } break; case 6: switch (os.Version.Minor) { case 0: versionNumber = EnumWinVersion.WINVISTA; break; case 1: versionNumber = EnumWinVersion.WIN7; break; case 2: versionNumber = EnumWinVersion.WIN8; break; case 3: versionNumber = EnumWinVersion.WIN81; break; default: versionNumber = EnumWinVersion.WIN7; break; } break; case 10: switch (os.Version.Minor) { case 0: versionNumber = EnumWinVersion.WIN10; break; default: versionNumber = EnumWinVersion.WIN10; break; } break; default: versionNumber = EnumWinVersion.UNKNOWN; break; } return(versionNumber); }
private void FormMain_Load(object sender, EventArgs e) { /////////////////////////////////////////////////////////////////// // Check .NET Framework version int FWVersion = Utils.GetFrameworkVersion(); if (FWVersion < 394802) // Less than .NET Framework 4.6.2 { MessageBox.Show("The application requires .NET Framework version = 4.6.2\nApplication will be stopped. Please update your .NET Framework and try again.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } /////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// // Version number /////////////////////////////////////////////////////////////////// using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("AMPClient.version.txt")) { using (StreamReader reader = new StreamReader(stream)) { VersionBuildNumber = reader.ReadToEnd(); } } try { Version version = Assembly.GetExecutingAssembly().GetName().Version; VersionNumber = String.Format("{0}.{1}.{2}", version.Major, version.Minor, VersionBuildNumber); } catch (Exception E) { String S = E.ToString(); } /////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// // Get operation system version EnumWinVersion WinVersion = Utils.GetWinVersionNumber(); if (WinVersion != EnumWinVersion.WIN7) WinVersion = EnumWinVersion.WIN10; /////////////////////////////////////////////////////////////////// // Get full service list FullServiceList = new List<ServiceItem>(); ClassWinServiceHelper.GetFullServiceList(FullServiceList); /////////////////////////////////////////////////////////////////// // Get service list for current operation system WWinServiceList = new List<ServiceItem>(); ClassWinServiceHelper.GetWWinServiceList(WWinServiceList, appSet, WinVersion); /////////////////////////////////////////////////////////////////// // Get service list to be processed // ProcServiceList = FullServiceList - WWinServiceList if (WWinServiceList.Count > 0) ProcServiceList = FullServiceList.Except(WWinServiceList, new ServiceItemComparer()).ToList(); /////////////////////////////////////////////////////////////////// // FOR DEBUG ONLY //ProcServiceList = new List<ServiceItem>(); //ProcServiceList.Add(new ServiceItem() { DisplayName = "Print Spooler", ServiceName = "Spooler", ServiceAction = EnumServiceAction.STOP }); if (isDebugEnabled == true) { String fileFullServiceList = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "FullServiceList.csv"); File.WriteAllLines(fileFullServiceList, FullServiceList.Select(x => String.Format("{0},{1}", x.ServiceName, x.DisplayName)).ToArray()); String fileWWinServiceList = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "WWinServiceList.csv"); File.WriteAllLines(fileWWinServiceList, WWinServiceList.Select(x => String.Format("{0},{1}", x.ServiceName, x.DisplayName)).ToArray()); String fileProcServiceList = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "ProcServiceList.csv"); File.WriteAllLines(fileProcServiceList, ProcServiceList.Select(x => String.Format("{0},{1}", x.ServiceName, x.DisplayName)).ToArray()); } /////////////////////////////////////////////////////////////////// // Set previous state indication switch (appSet.PreviousState) { case EnumSwitcherState.OFF: ampControlPanel.SwitcherState = EnumSwitcherState.OFF; break; case EnumSwitcherState.ON: ampControlPanel.SwitcherState = EnumSwitcherState.ON; break; default: ampControlPanel.SwitcherState = EnumSwitcherState.OFF; break; } InitializeGUI_ON_OFF(); AudioSrvPatch(); }
/// <summary> /// Get whitelisted service list /// </summary> /// <param name="WWinServiceList">Whitelisted service list</param> /// <param name="appSet">Application settings object</param> /// <param name="WinVersion">Windows version</param> /// <returns>Whitelisted services count</returns> public static int GetWWinServiceList(List <ServiceItem> WWinServiceList, ApplicationSettings appSet, EnumWinVersion WinVersion) { if (WWinServiceList != null) { WWinServiceList.Clear(); } else { WWinServiceList = new List <ServiceItem>(); } /////////////////////////////////////////////////////////////////// // Load whiteliste services from settings file if ((appSet != null) && (appSet.ServiceList.Count > 0)) { foreach (var item in appSet.ServiceList) { WWinServiceList.Add(new ServiceItem() { ServiceName = item.ServiceName, DisplayName = item.DisplayName, ServiceAction = item.ServiceAction }); } } else { /////////////////////////////////////////////////////////////// // Parse whitelisted service list from the config file String profileName = String.Format("{0}.profile", WinVersion); if (File.Exists(profileName)) { String[] data = File.ReadAllLines(profileName); foreach (string line in data) { string[] d = line.Split('\t'); Int32 ActionCode; Int32.TryParse(d[2].ToString(), out ActionCode); WWinServiceList.Add(new ServiceItem() { ServiceName = d[0].ToString(), DisplayName = d[1].ToString(), ServiceAction = (EnumServiceAction)ActionCode }); } /////////////////////////////////////////////////////////// // Save parsed whitelist in settings file foreach (var item in WWinServiceList) { appSet.ServiceList.Add(new ServiceItem() { ServiceName = item.ServiceName, DisplayName = item.DisplayName, ServiceAction = item.ServiceAction }); } appSet.Save(); } } return(WWinServiceList.Count); }