EonaCat_WindowsKeyViewer/EonaCat_WindowsKeyViewer/Models/WindowsModel.cs

186 lines
5.7 KiB
C#
Raw Normal View History

2018-12-19 19:40:57 +01:00
using System;
using System.Collections;
using System.Globalization;
using System.Management;
using System.Windows;
using EonaCat_WindowsKeyViewer.Models.Objects;
namespace EonaCat_WindowsKeyViewer.Models
{
public class WindowsModel
{
private ArrayList _windowsCollection = new ArrayList();
internal string DecodeProductKey(byte[] digitalProductId)
{
int num;
char[] characterArray = new char[]
{
'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'M', 'P', 'Q', 'R', 'T', 'V', 'W', 'X',
'Y', '2', '3', '4', '6', '7', '8', '9'
};
char[] characterArray2 = new char[0x1d];
ArrayList list = new ArrayList();
for (num = 52; num <= 67; num++)
{
list.Add(digitalProductId[num]);
}
for (num = 0x1c; num >= 0; num--)
{
if (((num + 1) % 6) == 0)
{
characterArray2[num] = '-';
}
else
{
int index = 0;
for (var i = 14; i >= 0; i--)
{
int num4 = (index << 8) | ((byte)list[i]);
list[i] = (byte)(num4 / 24);
index = num4 % 24;
characterArray2[num] = characterArray[index];
}
}
}
return new string(characterArray2);
}
public ArrayList WindowsList { get; set; } = new ArrayList();
public bool InformationRetrieved { get; private set; }
public void GetWindowsInformation()
{
WindowsList.Clear();
InformationRetrieved = false;
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
var windows = new WindowsInformation();
foreach (var managementBaseObject in searcher.Get())
{
var managementObject = (ManagementObject) managementBaseObject;
windows.Caption = managementObject["Caption"].ToString();
windows.CountryCode = managementObject["CountryCode"].ToString();
windows.BuildNumber = managementObject["BuildNumber"].ToString();
try
{
windows.CSDVersion = managementObject["CSDVersion"].ToString();
}
catch (NullReferenceException)
{
windows.CSDVersion = "Unknown, or no service pack installed";
}
windows.Description = managementObject["Description"].ToString();
windows.RegisteredUser = managementObject["RegisteredUser"].ToString();
windows.InstallDate = managementObject["InstallDate"].ToString();
DateTime time = ToDateTime(windows.InstallDate);
windows.InstallDate = time.AddTicks(-TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).Ticks).ToLocalTime().ToString(CultureInfo.InvariantCulture);
try
{
windows.Organization = managementObject["Organization"].ToString();
}
catch (NullReferenceException)
{
windows.Organization = "";
}
windows.SerialNumber = managementObject["SerialNumber"].ToString();
windows.Version = managementObject["Version"].ToString();
}
WindowsList.Add(windows);
InformationRetrieved = true;
}
catch (Exception exception)
{
MessageBox.Show(exception.ToString());
}
}
private static DateTime ToDateTime(string currentDate)
{
int year = DateTime.Now.Year;
int month = 1;
int day = 1;
int hour = 0;
int minute = 0;
int second = 0;
int millisecond = 0;
string result = string.Empty;
if ((string.Empty == currentDate) || (currentDate == null))
{
return DateTime.MinValue;
}
if (currentDate.Length != 0x19)
{
return DateTime.MinValue;
}
result = currentDate.Substring(0, 4);
if ("****" != result)
{
year = int.Parse(result);
}
result = currentDate.Substring(4, 2);
if ("**" != result)
{
month = int.Parse(result);
}
result = currentDate.Substring(6, 2);
if ("**" != result)
{
day = int.Parse(result);
}
result = currentDate.Substring(8, 2);
if ("**" != result)
{
hour = int.Parse(result);
}
result = currentDate.Substring(10, 2);
if ("**" != result)
{
minute = int.Parse(result);
}
result = currentDate.Substring(12, 2);
if ("**" != result)
{
second = int.Parse(result);
}
result = currentDate.Substring(15, 3);
if ("***" != result)
{
millisecond = int.Parse(result);
}
return new DateTime(year, month, day, hour, minute, second, millisecond);
}
}
}