如何检查我的应用程序是否可以创建符号链接?

时间:2015-03-12 08:34:21

标签: java java-7

从我的Java应用程序中,我想创建一个符号链接。但是,我的应用程序可以在不同的情况下运行,并非所有这些都允许创建符号链接。我有以下情况:

  1. Linux - 总是可以制作符号链接
  2. Windows - 如果您以管理员身份运行应用程序,则可以创建符号链接。
  3. 要创建符号链接,我使用Files.createSymbolicLink()。如果Windows没有权限,则会在Windows下抛出IOException。确切地说,例外是:

    java.nio.file.FileSystemException: test\link: A required privilege is not held by the client.
    

    我希望能够在尝试创建符号链接之前判断我是否拥有应用程序(Java 7或更高版本)的此权限。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

此代码仅适用于Windows,并附带Java。

public static boolean AdminAuth() {
    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;
}

SID S-1-5-32-544是Windows操作系统中Administrator组的ID。

您还可以查看有关适用于Windows的Application Manifest的此documentation