Проблема, с которой я столкнулся в своем приложении Swing в Windows 7 (и, по-видимому, в Vista - еще не пробовал), заключается в том, что среда выполнения Java указывает Windows, что она поддерживает UAC, а мое приложение, работающее в JVM, фактически нет. В результате, если кто-то устанавливает его в традиционное расположение (например, C: \ Program Files \ MyApp), приложение завершает работу с ошибкой, поскольку оно не может записать данные конфигурации или файлы журнала ошибок в свой установочный каталог. Потому что я использую некоторые сторонние библиотеки, которые записывают свои собственные файлы в текущий каталог (т. Е. Устанавливают), и у меня есть гораздо более важные вещи, чем копаться в этих библиотеках только для того, чтобы их отчеты об ошибках и хранилище конфигурации были с поддержкой UAC Я выбрал путь наименьшего сопротивления и изменил каталог установки по умолчанию на C: \ MyApp. Я понимаю, что это возвращение к прежним временам DOS, когда люди получали множество каталогов приложений в C: \, но я не виноват, что метод реализации виртуализации UAC для устаревших приложений в Windows не работает для приложений Java.