andrew4582

AboutTools

Jul 22nd, 2011
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.24 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Microsoft.Win32;
  6.  
  7. public static class AboutTools {
  8.     public static string NiceWindowsVersion(this OperatingSystem os) {
  9.         switch(os.Platform) {
  10.             case PlatformID.Win32Windows:
  11.                 switch(os.Version.Minor) {
  12.                     case 0:
  13.                         return "Windows 95";
  14.                     case 10:
  15.                         if(os.Version.Revision.ToString() == "2222A")
  16.                             return "Windows 98 SE";
  17.                         else
  18.                             return "Windows 98";
  19.                     case 90:
  20.                         return "Windows ME";
  21.                 }
  22.                 break;
  23.             case PlatformID.Win32NT:
  24.                 switch(os.Version.Major) {
  25.                     case 3:
  26.                         return "Windows NT 3.51";
  27.                     case 4:
  28.                         return "Windows NT 4.0";
  29.                     case 5:
  30.                         switch(os.Version.Minor) {
  31.                             case 0:
  32.                                 return "Windows 2000";
  33.                             case 1:
  34.                                 return "Windows XP";
  35.                             case 2:
  36.                                 return "Windows 2003 Server";
  37.                         }
  38.                         break;
  39.                     case 6:
  40.                         switch(os.Version.Minor) {
  41.                             case 0:
  42.                                 return "Windows Vista / 2008 Server";
  43.                             case 1:
  44.                                 return "Windows 7";
  45.                         }
  46.                         break;
  47.                 }
  48.                 break;
  49.         }
  50.  
  51.         return os.VersionString;
  52.     }
  53.  
  54.     public static DateTime CompilationTime(this Version v) {
  55.         return new DateTime(v.Build * TimeSpan.TicksPerDay + v.Revision * TimeSpan.TicksPerSecond * 2).AddYears(1999).AddDays(-1);
  56.     }
  57.  
  58.     public static List<NetFrameworkVersion> FrameworkVersions() {
  59.         List<NetFrameworkVersion> versions = new List<NetFrameworkVersion>();
  60.         RegistryKey oldComponentsKey = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\");
  61.         if(oldComponentsKey == null)
  62.             oldComponentsKey = Registry.LocalMachine.OpenSubKey(@"HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\");
  63.         if(oldComponentsKey != null)
  64.             versions.AddRange(oldComponentsKey.SubKeys((n,k) =>
  65.                 new NetFrameworkVersion() {
  66.                     GlobalVersion = "v1.0",
  67.                     FullVersion = (string)k.GetValue("Version"),
  68.                     ServicePack = GetOldComponentServicePack(k)
  69.                 }).ToList());
  70.  
  71.  
  72.         RegistryKey componentsKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Net Framework Setup\NDP\");
  73.         versions.AddRange(componentsKey.SubKeys((n,k) =>
  74.             new NetFrameworkVersion {
  75.                 GlobalVersion = n,
  76.                 FullVersion = (string)k.GetValue("Version"),
  77.                 ServicePack = (int?)k.GetValue("SP")
  78.             }).ToList());
  79.         return versions;
  80.     }
  81.  
  82.     private static int? GetOldComponentServicePack(RegistryKey k) {
  83.         string[] e = ((string)k.GetValue("Version")).Split(',');
  84.         int sp;
  85.         if(int.TryParse(e.LastOrDefault(),out sp))
  86.             return sp;
  87.         else
  88.             return null;
  89.     }
  90.  
  91.     public static IEnumerable<T> SubKeys<T>(this RegistryKey key,Func<string,RegistryKey,T> func) {
  92.         string[] keyNames = key.GetSubKeyNames();
  93.         foreach(var keyName in keyNames) {
  94.             using(var k = key.OpenSubKey(keyName))
  95.                 yield return func(keyName,k);
  96.         }
  97.     }
  98.  
  99.     public class NetFrameworkVersion {
  100.         public string GlobalVersion { get; internal set; }
  101.         public string FullVersion { get; internal set; }
  102.         public int? ServicePack { get; internal set; }
  103.  
  104.         public override string ToString() {
  105.             return GlobalVersion + (ServicePack != null ? " SP" + ServicePack : "");
  106.         }
  107.     }
  108.  
  109. }
Advertisement
Add Comment
Please, Sign In to add comment