Java 检测用户是否为管理员

Java 检测用户是否为管理员,java,Java,因此,我想知道用户是否以管理员权限运行应用程序,而不管该用户使用的是什么操作系统 我找到了Windows的解决方案(从网站上): Mac和Ubuntu呢?我认为完全独立于操作系统是不可能的,但几个月前我不得不检查IzPack的源代码,它完全符合你的需要 在PrivilegedRunner类中,必须检查它是否具有管理员权限,检查方法isElevationNeeded 以下是我非常怀疑您的上述解决方案是否能在不同版本的Windows上可靠运行,尤其是使用verbotencom.sun.import。

因此,我想知道用户是否以管理员权限运行应用程序,而不管该用户使用的是什么操作系统

我找到了Windows的解决方案(从网站上):


Mac和Ubuntu呢?

我认为完全独立于操作系统是不可能的,但几个月前我不得不检查IzPack的源代码,它完全符合你的需要

PrivilegedRunner
类中,必须检查它是否具有管理员权限,检查方法
isElevationNeeded


以下是

我非常怀疑您的上述解决方案是否能在不同版本的Windows上可靠运行,尤其是使用verboten
com.sun.
import。也许你应该描述一下为什么需要检测这个问题——可能有更好的解决方案。在Ubuntu上,你可能可以检查
whoami
命令是否返回
root
。Java没有可移植的方法来知道这一点——见鬼,没有编程语言,我believe@LittleChild您正试图以一种语言获取特定于平台的信息,其中一个明确的目标是保持独立于平台。在我看来,这在概念上是不可靠的,因为拥有“管理员”角色或权限的用户在不同的系统上并不意味着相同的事情。这是不可能的,因为并非所有操作系统都有管理员或超级用户的概念。Java可以在Windows95上运行,Windows95没有任何这样的最大特权原则。
public static boolean isAdmin() {
    String groups[] = (new com.sun.security.auth.module.NTSystem()).getGroupIDs();
    for (String group : groups) {
        if (group.equals("S-1-5-32-544"))
            return true;
    }
    return false;
}