mirror of
https://github.com/zs-yg/kortapp-z.git
synced 2025-12-07 00:20:43 +08:00
86 lines
2.8 KiB
C#
86 lines
2.8 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Windows.Forms;
|
|
using System.Security.Principal;
|
|
|
|
namespace AppStore
|
|
{
|
|
public class SelfStartingManagerToolCard : ToolCard
|
|
{
|
|
public SelfStartingManagerToolCard()
|
|
{
|
|
this.ToolName = "自启动管理";
|
|
try
|
|
{
|
|
string iconPath = Path.Combine(Application.StartupPath, "img", "resource", "png", "Self_starting_management.png");
|
|
if (File.Exists(iconPath))
|
|
{
|
|
this.ToolIcon = Image.FromFile(iconPath);
|
|
}
|
|
this.UpdateDisplay();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logger.LogError("加载自启动管理图标失败", ex);
|
|
}
|
|
|
|
// 订阅点击事件
|
|
this.ToolCardClicked += OnSelfStartingManagerClicked;
|
|
}
|
|
|
|
private void OnSelfStartingManagerClicked(object sender, EventArgs e)
|
|
{
|
|
if (!IsRunningAsAdmin())
|
|
{
|
|
var result = MessageBox.Show("自启动管理需要管理员权限,是否立即以管理员身份重新运行?",
|
|
"权限提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
|
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
RestartAsAdmin();
|
|
}
|
|
return;
|
|
}
|
|
|
|
try
|
|
{
|
|
var form = new SelfStartingManagerForm();
|
|
form.ShowDialog();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"启动自启动管理器失败: {ex.Message}", "错误",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
Logger.LogError("启动自启动管理器失败", ex);
|
|
}
|
|
}
|
|
|
|
private bool IsRunningAsAdmin()
|
|
{
|
|
var identity = WindowsIdentity.GetCurrent();
|
|
var principal = new WindowsPrincipal(identity);
|
|
return principal.IsInRole(WindowsBuiltInRole.Administrator);
|
|
}
|
|
|
|
private void RestartAsAdmin()
|
|
{
|
|
try
|
|
{
|
|
var startInfo = new ProcessStartInfo
|
|
{
|
|
FileName = Application.ExecutablePath,
|
|
UseShellExecute = true,
|
|
Verb = "runas"
|
|
};
|
|
Process.Start(startInfo);
|
|
Application.Exit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"无法以管理员身份重新运行: {ex.Message}", "错误",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
Logger.LogError("以管理员身份重新运行失败", ex);
|
|
}
|
|
}
|
|
}
|
|
} |