如何检查我的程序是否以admin / sudo C#/。NET Core

时间:2018-03-19 22:30:24

标签: c# .net .net-core cross-platform

如何检查我的程序是否以admin / sudo身份运行?我正在制作一个跨平台的C#程序,需要以管理员身份运行才能运行。它将在Windows,macOS和Linux上运行,因此我不知道.NET Core似乎没有像我发现的仅针对.NET Framework / Windows的其他解决方案那样拥有命名空间。 / p>

1 个答案:

答案 0 :(得分:-1)

试试这个:

static class RootChecker
{
    [DllImport("libc")]
    public static extern uint getuid();

    public static bool IsRoot()
    {
        if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
        {
            bool isAdmin;
            using (var identity = WindowsIdentity.GetCurrent())
            {
                var principal = new WindowsPrincipal(identity);
                isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
            }

            return isAdmin;
        }
        else
        {
            return getuid() == 0;
        }
    }
}