如何判断 .NET Core 应用程序以管理员身份运行的

2022-04-17 07:48:01
目录
1.euid2.setuid3.Demo

有时候,我们需要知道当前程序是否以管理员身份运行,以便执行一些需要特殊权限的操作。

在github上找到了一个解决方案:

//需要引用nuget包Mono.Posix.NETStandardpublic static bool IsAdministrator =>  RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ?    new WindowsPrincipal(WindowsIdentity.GetCurrent())      .IsInRole(WindowsIjqLUpgxBuiltInRole.Administrator) :    Mono.Unix.Native.Syscall.geteuid() == 0;

Windows 下的判断很好理解,用户属于 Administrator 角色。但是 linux 下的​​geteuid() ==IjqLUpgx 0​​易采站长站是什么意思?

1.euid

linux 系统中每个进程都有2个 ID,分别为用户 ID(uid)和有效用户 ID(euid)。

​​root​​​的用户 ID确实是0。 ​

Console.WriteLine($"UID: {Mono.Unix.Native.Syscall.getuid()}");Console.WriteLine($"EUID: {Mono.Unix.Nat(​​root​​用户)了。

如何判断.NETCore应用程序以管理员身份运行的

结论:

综上,github 上给的解决方案非常完美,如果你要判断当前用户是否​​root​​​,则需要使用​​getuid() == 0​​