相关疑难解决方法(0)

警告:无法更改每个人的权限:

在NetBeans中运行https://developers.google.com/drive/web/quickstart/java?hl=hu上的Java快速入门示例时,我收到错误代码:

Jun 04, 2015 12:12:11 AM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
WARNING: unable to change permissions for everybody:
C:\Users\Quibbles\credentials\drive-api-quickstart
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

编辑:这是完整的错误消息.

Jun 04, 2015 5:11:39 PM com.google.api.client.util.store.FileDataStoreFactory setPermissionsToOwnerOnly
WARNING: unable to change permissions for owner: C:\Users\Quibbles\.credentials\drive-api-quickstart
Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
    at DriveQuickstart.authorize(DriveQuickstart.java:64)
    at DriveQuickstart.getDriveService(DriveQuickstart.java:87)
    at DriveQuickstart.main(DriveQuickstart.java:96)
Java Result: 1
Run Code Online (Sandbox Code Playgroud)

java google-drive-api

28
推荐指数
4
解决办法
2万
查看次数

通过UAC提升ProcessBuilder流程?

我正在尝试运行外部可执行文件,但显然它需要提升.代码是这样的,从使用ProcessBuilder的示例修改(因此具有一个参数的数组):

    public static void main(String[] args) throws IOException {
        File demo = new File("C:\\xyzwsdemo");
        if(!demo.exists()) demo.mkdirs();
        String[] command = {"C:\\fakepath\\bsdiff4.3-win32\\bspatch.exe"};
        ProcessBuilder pb = new ProcessBuilder( command );
        Process process = pb.start();
        InputStream is = process.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        String line;
        System.out.printf("Output of running %s is:\n", Arrays.toString(command));
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        try {
            int exitValue = process.waitFor();
            System.out.println("\n\nExit Value is " + exitValue);
        } catch (InterruptedException e) {
            e.printStackTrace(); …
Run Code Online (Sandbox Code Playgroud)

java elevation processbuilder

15
推荐指数
1
解决办法
6167
查看次数

Windows上的Java:测试Java应用程序是否作为提升的进程运行(具有管理员权限)

情况

我有一个(基于Eclipse RCP)Java应用程序在多个平台上运行.除了Windows之外,我在所有平台上都弄明白了.

安装程序:我的应用程序安装程序始终以提升模式运行,因此可以将应用程序安装到C:\Program files\MyProduct.从用户角度来看,这意味着安装程序只能由管理员执行,UAC将要求确认.这很好用.

正常使用:普通用户可以启动应用程序.不需要管理员权限.这很好用.

自动更新:自动更新功能也会写入C:\Program Files\MyProduct,因此也需要管理员权限.这就是为什么应用程序虽然可以作为普通应用程序启动,但必须作为升级过程运行以自动更新.从用户的角度来看,它应该是" 以管理员身份运行 "来自动更新.

我想进行运行时检查以查看我的Java进程是否处于提升模式(即查看它是否是' 以管理员身份运行 '.

请注意,它可能是仅限Windows的解决方案.使用Java反射API,我可以在运行时检查Windows和/或特定于实现的类.

研究

我只在StackOverflow上找到了这个问题: 检测Java应用程序是否作为Windows管理员运行

但是,该解决方案将返回活动用户是否为Administrator组的成员.用户可能仍然以非提升模式启动我的应用程序.我已经证实了这一点.

注意

我知道Eclipse RCP应用程序会在用户目录中自动安装更新,当他或她没有管理员权限时,我想阻止这种情况.

我想允许特定于用户的配置(工作正常),但允许用户特定的更新将在卸载后留下太多混乱.

java windows privileges administrator eclipse-rcp

5
推荐指数
2
解决办法
3435
查看次数