代码如下:
using System;
using System.Security.Principal;
using System.Windows.Forms;
namespace WindowsFormsApp2
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
// 检查当前用户是否已经是管理员
bool isAdmin = CheckIfAdmin();
if (!isAdmin)
{
// 如果不是管理员,使用提升权限启动当前应用程序
RestartElevated();
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
private static bool CheckIfAdmin()
{
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
private static void RestartElevated()
{
// 获取当前执行的exe文件路径
string exeName = System.Reflection.Assembly.GetExecutingAssembly().Location;
// 启动新的进程,以管理员权限运行
System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo();
processStartInfo.UseShellExecute = true;
processStartInfo.Verb = "runas";
processStartInfo.FileName = exeName;
try
{
System.Diagnostics.Process.Start(processStartInfo);
// 当前进程退出
Application.Exit();
}
catch (Exception ex)
{
MessageBox.Show("提升权限失败: " + ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
宝藏up主
参考链接:
C# 判断是否以管理员身份运行,如果不是管理员身份则以管理员身份运行_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Kr421E7Vy/?spm_id_from=333.337.search-card.all.clickC# 判断是否以管理员身份运行,如果不是管理员身份则以管理员身份运行-罗分明网络博客 (luofenming.com)
https://www.luofenming.com/show.aspx?id=2024051222270721
特此记录
anlog
2024年5月19日