Для подписанного java-апплета в Windows 7 или XP что может вызвать Desktop.isDesktopSupported () = true, но desktop.isSupported (Desktop.Action.OPEN) = false?

У меня есть одна большая группа пользователей, которые не могут запустить локально созданный файл (PDF, Word и т. Д.) Из подписанного апплета. Двойной щелчок по файлу в проводнике Windows запускает его, так что ассоциация файла с запускающим приложением известна. Техническая поддержка удаленно входит в систему на машине с включенным UAC, не видит проблем с загрузкой апплета и может без проблем запустить локальный файл. Это заставляет меня думать, что у большой группы есть общие местные условия. Пользователи используют Java 1.6u31 в Windows XP (или 7, не уверен). Ошибка не отображается, и в консоли java ничего не отображается (все понаслышке, так как я не вижу проблемы). Есть предложения по поводу того, какие локальные настройки ПК могут вызывать такое поведение? Судя по коду, проблема в том, что Desktop поддерживается, а Desktop.Action.OPEN - нет. Есть предложения, почему? Спасибо.
Я использую для запуска файла следующее:

            /*
            //old way that would work for Windows prior to Java 1.6
            //cmd = System.getenv("windir") +"\\system32\\"+"rundll32 SHELL32.DLL,ShellExec_RunDLL " + cmd;
            //cmd = "open "+cmd;  // Mac for PDF only?
            //try{
            //  Runtime.getRuntime().exec(cmd);
            //} catch (Exception e) {
            //  //handle error
            //}
            */
            Desktop desktop = null;
            if (Desktop.isDesktopSupported()) {
                desktop = Desktop.getDesktop();
                if (desktop.isSupported(Desktop.Action.OPEN)) {
                    try {
                        desktop.open(new File(file));
                        return;
                    } catch (IOException e) {
                        //Error launching the file
                        e.printStackTrace();
                        JOptionPane.showMessageDialog(theFrame,
                            "Unable to launch the file.",
                            "Document Error", JOptionPane.ERROR_MESSAGE);
                        return;
                    }
                }
            } else {
                //This OS cannot launch the file
                JOptionPane.showMessageDialog(theFrame,
                        "This operating system is unable" +
                        "\nto launch external files" +
                        "\nfrom within this application.",
                        "Document Error", JOptionPane.ERROR_MESSAGE);
                    return;
            }

person James    schedule 23.08.2012    source источник
comment
Я понимаю, почему пользователь ничего не видит: Desktop поддерживается, а Desktop.Action.OPEN - нет, и я не показываю полезное сообщение. Итак, вопрос в том, какие локальные настройки могут вызвать такое поведение? Это конфигурация Windows или Java? Спасибо еще раз!   -  person James    schedule 24.08.2012


Ответы (1)


Чистые догадки:

1) все затронутые пользователи используют Windows 7

2) Vista / Win 7 "UAC" вас кусает:

ПРЕДЛОЖЕНИЕ (только диагностика):

Найдите одного из пострадавших пользователей, попробуйте отключить UAC и посмотрите, «вдруг он не начнет работать»

Control Panel->User Accounts->Turn User Account Control off

==================================================================================

Приложение 24.08.2012:

1) Из ваших последующих заметок я понимаю, что вы не просто пытаетесь выполнить программу - вы фактически пытаетесь вызвать ассоциацию файлов Windows (т.е. "открыть оболочку" .pdf должен запустить экземпляр "AcroReader") .

2) Посмотрите эту ссылку:

3) Обновите свой JDIC (при необходимости)

4) Добавьте в апплет пару тестовых кнопок:

а) "откройте" notepad.exe (посмотрите, можете ли вы напрямую вызвать .exe по имени)

б) "открыть" somefile.txt (посмотрите, можете ли вы вызвать какие-либо ассоциации файлов - например, "блокнот" для ".txt")

5) Если ничего из вышеперечисленного не приводит к решению, получите прямой доступ к одному из «неисправных ПК», чтобы вы могли отлаживать «руками».

'Надеюсь, это поможет!

person paulsm4    schedule 23.08.2012
comment
Я обнаружил и эту проблему после публикации, но не думаю, что это так. У меня есть несколько учетных записей на моем компьютере с Win 7, и для UAC установлен самый строгий уровень «Всегда уведомлять», и я НЕ вижу проблемы. Тем не менее, я все равно попрошу специалиста предложить это. Я также нашел ссылку на MagicISO в stackoverflow.com/questions/11774247/ и тоже спрашивали об этом. Спасибо. - person James; 24.08.2012
comment
Какой тип файла запускается? Я запускаю Windows 7 и использую UAC, но никогда не пробовал использовать его для запуска исполняемого файла. Я полагаю, что UAC будет подсказывать только это. - person Andrew Thompson; 24.08.2012
comment
Нет исполняемых файлов. Это могут быть файлы, созданные пользователем, такие как PDF, Word, Excel и т. Д. Пользователь создает и загружает файл, а апплет позволяет пользователю проверить, является ли он только что загруженным файлом правильным, запустив его с помощью кнопки. Кнопка была запрошена пользователями, так что не судите меня по моему интерфейсу! Спасибо. - person James; 24.08.2012
comment
Спасибо, что изучили это подробнее. RE 2) проблема та же, но решения не было. RE 3) Обновите свой JDIC, ​​не знаю, что здесь делать. У пользователей должна быть стандартная JRE 1.6u31 или новее (или 1.7.x). Я думал, что объект Desktop включен в стандартную установку. RE 4) Я использую локальную среду разработки и техподдержку, загружая ту же банку, что и проблемный пользователь, НЕ вижу проблемы, поэтому добавление кнопок локально на сервере разработки мне не поможет (и я не могу попросить проблемного пользователя войти в мою dev, если я не совсем отчаялся). Все еще ищу ... Спасибо. - person James; 27.08.2012
comment
@ paulsm4 Спасибо. Это все еще проблема. Я использую удаленный рабочий стол с учетной записью администратора на клиентском компьютере XP, на котором возникла проблема. desktop.open (x); не генерирует исключение. Отладка до / после печати, между которыми ничего нет, но файл не открывается. Я попытался закрыть некоторые службы, защиту от вирусов и завершить работу в диспетчере задач. Все они не влияют на эту машину XP, и я по-прежнему не вижу ошибок на своей машине при запуске того же приложения. Я видел упоминания о проблемах с MagicIso, но их нет на этом компьютере. Будем признательны за любые другие предложения! - person James; 16.10.2012