Files
time-mocker-csharp/TimeMocker.UI/Program.cs
T
2026-02-25 14:03:46 +07:00

53 lines
1.7 KiB
C#

using System;
using System.Windows.Forms;
using TimeMocker.UI.Forms;
namespace TimeMocker.UI
{
internal static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
// EasyHook requires elevated privileges for cross-process injection
if (!IsElevated())
{
var result = MessageBox.Show(
"TimeMocker needs to run as Administrator to inject into other processes.\n\n" +
"Please restart as Administrator.",
"Elevation Required",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Warning);
if (result == DialogResult.OK)
RestartAsAdmin();
return;
}
Application.Run(new MainForm());
}
private static bool IsElevated()
{
using var id = System.Security.Principal.WindowsIdentity.GetCurrent();
var principal = new System.Security.Principal.WindowsPrincipal(id);
return principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
}
private static void RestartAsAdmin()
{
var info = new System.Diagnostics.ProcessStartInfo
{
FileName = Application.ExecutablePath,
UseShellExecute = true,
Verb = "runas"
};
try { System.Diagnostics.Process.Start(info); }
catch { /* user cancelled UAC */ }
}
}
}