mirror of
https://github.com/tiennm99/time-mocker-csharp.git
synced 2026-06-06 10:14:00 +00:00
58 lines
1.7 KiB
C#
58 lines
1.7 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using TimeMocker.UI.Forms;
|
|
|
|
namespace TimeMocker.UI
|
|
{
|
|
internal static class Program
|
|
{
|
|
[STAThread]
|
|
private 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 */
|
|
}
|
|
}
|
|
}
|
|
} |