1、在App.xaml.cs中输入下方代码就搞定了,实在是没什么可以废话的了。
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
try
{
#region 设置只能运行一个实例及以管理员身份运行
Process cur = Process.GetCurrentProcess();
foreach (Process p in Process.GetProcesses())
{
if (p.Id == cur.Id) continue;
if (p.ProcessName == cur.ProcessName)
{
Shutdown();
return;
}
}
CheckAdministrator();
#endregion
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
/// <summary>
/// 检测是否以管理员身份运行
/// </summary>
private void CheckAdministrator()
{
var wi = System.Security.Principal.WindowsIdentity.GetCurrent();
var wp = new System.Security.Principal.WindowsPrincipal(wi);
bool runAsAdmin = wp.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator);
if (!runAsAdmin)
{
var processInfo = new ProcessStartInfo(System.Reflection.Assembly.GetExecutingAssembly().CodeBase);
processInfo.UseShellExecute = true;
processInfo.Verb = "runas";
try
{
Process.Start(processInfo);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}
Environment.Exit(0);
}
}