Radeon Reset Bug fix service
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RadeonResetBugFix/RadeonResetBugFixService/EnvironmentHelper.cs

50 lines
1.8 KiB

namespace RadeonResetBugFixService
{
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Security.Principal;
static class EnvironmentHelper
{
private static class NativeMethods
{
[DllImport("kernel32.dll")]
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
public static extern bool IsWindowVisible(IntPtr hWnd);
}
private static Version VistaVersion { get; } = new Version(6, 0);
private static Version Windows8Version { get; } = new Version(6, 2);
// Code taken from https://stackoverflow.com/a/53716169
public static bool IsConsoleVisibleOnWindows() => NativeMethods.IsWindowVisible(NativeMethods.GetConsoleWindow());
private static bool IsWindows() => RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
// Code taken from https://stackoverflow.com/a/2679654
public static bool HasAdministratorPrivileges()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
public static bool IsWindows8OrNewer() => IsWindows() && Environment.OSVersion.Version >= Windows8Version;
public static bool IsVistaOrNewer() => IsWindows() && Environment.OSVersion.Version >= VistaVersion;
// Code taken from https://stackoverflow.com/a/826850
public static DateTime GetServiceBuildDate()
{
var version = Assembly.GetExecutingAssembly().GetName().Version;
return new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Unspecified)
.AddDays(version.Build)
.AddSeconds(version.Revision * 2);
}
}
}