在 C# 控制台应用程序中以管理员身份实现重启

bug*_*uga 2 .net c# windows

我有一个控制台应用程序可以删除一些文件,并且只有以管理员身份启动时才能执行此操作。

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

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

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

这在 C# 中很容易做到吗?

bug*_*uga 10

感谢评论中的明智建议,我成功完成了它。

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();
}
Run Code Online (Sandbox Code Playgroud)