【问题标题】:implement restart as Administrator in C# console app在 C# 控制台应用程序中以管理员身份重新启动
【发布时间】:2022-01-12 01:14:42
【问题描述】:

我有一个删除一些文件的控制台应用程序,它只能以管理员身份启动。

当应用程序不是以管理员身份启动时,我希望它:

  1. 关闭
  2. 然后重新开始,
  3. 和用户获得“以管理员身份启动是/否对话框”

(有点像notepad++,当你尝试编辑某个文件时,它会询问你是否要以管理员身份重新启动)

这在 C# 中容易做到吗?

【问题讨论】:

  • 这在 C# 中很容易做到吗? 是的,它是(但按 3、2、1 顺序)......到目前为止你尝试了什么?已经有关于如何以管理员权限从 C# 启动进程的问题的答案
  • 3, 2, 1 表示我右键选择以管理员身份打开,不涉及代码。我希望应用程序关闭并重新打开,并在窗口对话框中询问您是否要以管理员身份打开
  • 你启动应用程序,应用程序检查是否有管理员权限,如果没有,它以管理员权限启动,出现UAC对话框,非管理员实例可以关闭

标签: c# .net windows


【解决方案1】:

感谢 cmets 中的明智建议,我设法完成了。

static void Main()
{
    if (!IsAdministrator())
    {
        Console.WriteLine("restarting as admin");
        StartAsAdmin(Assembly.GetExecutingAssembly().Location);
        return;
    }
    ...
}

public static bool IsAdministrator()
{
    var identity = WindowsIdentity.GetCurrent();
    var principal = new WindowsPrincipal(identity);
    return principal.IsInRole(WindowsBuiltInRole.Administrator);
}

public static void StartAsAdmin(string fileName)
{
    var proc = new Process
    {
        StartInfo =
        {
            FileName = fileName, 
            UseShellExecute = true, 
            Verb = "runas"
        }
    };

    proc.Start();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2015-06-24
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多