using System;
using System.Security.Principal;
using System.Windows.Forms;

namespace ThunderboltTimeSync {
	static class Program {
		/// <summary>
		/// Checks if the application is currently running with administrator privileges.
		/// </summary>
		/// <returns>True if the application is running with administrator privileges, false otherwise.</returns>
		private static bool IsRunningAsAdministrator() {
			WindowsIdentity identity = WindowsIdentity.GetCurrent();
			WindowsPrincipal principal = new WindowsPrincipal(identity);
			return principal.IsInRole(WindowsBuiltInRole.Administrator);
		}

		/// <summary>
		/// The main entry point for the application.
		/// </summary>
		[STAThread]
		static void Main() {
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);

			if (!IsRunningAsAdministrator()) {
				MessageBox.Show(
					"This application must be run with administrative privileges. Without administrative privileges, the system time cannot be set.\n\nPlease restart the application as administrator.",
					"Administrative Privileges Required",
					MessageBoxButtons.OK,
					MessageBoxIcon.Error
				);
			} else {
				Application.Run(new FormMain());
			}
		}
	}
}