2016-04-29 5 views
0

У меня есть программа на Java 8, которая отлично работает везде на моем компьютере под управлением Windows 10 , за исключением при запуске из-под C: \ Program Files или C: \ Program Files (x86), где требуется, чтобы она выполнялась как «Администратор» для работы ,Java-программа с JNA + DLL требует «Запуск от имени администратора» в папке C: Program Files на Win10?

Каковы ограничения для запуска программ Java и доступа к оборудованию из C: \ Program Files?

Эта Java-программа использует JNA для загрузки DLL и JavaFX для отображения пользовательского интерфейса, поэтому, возможно, это связано. Сопутствующая программа в том же каталоге, что и на JavaFX, но NOT JNA и DLL работают отлично.

Это не вопрос установщика, поскольку установщик не задействован; при использовании установщика поведение не меняется.

Это не проблема со встроенными путями или с (x86) и/или пробелами в пути, так как аналогичные именованные каталоги в C: \ Program Files (x86) также отлично работают.

+0

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

+0

Сбой в пользовательском вызове библиотеки, который трудно отлаживать, но я думаю, что библиотека пытается записать файл, например, как предлагает Алекс. – simpleuser

ответ

1

Я не верю, что проблема связана с Java, это больше о модели безопасности ОС. Обратите внимание: вы не можете сохранить файл напрямую в обе эти папки, например, но можете скопировать любой файл в эту папку с помощью повышенной подсказки. Это хорошая практика безопасности, и в прошлом ее можно было отключить (насколько я помню), отключив UAC (что не рекомендовалось, так или иначе).

Если вы хотите обновить приложение в будущем, то поместите его где-нибудь в другом месте, как это делают многие приложения.

+0

Это может быть и так; Я проверю это. Но означает ли это, что после установки программы он не сможет обновить компоненты, хранящиеся в каталоге программных файлов? Что любые такие компоненты должны быть в другом месте, например, в приложениях? – simpleuser

+0

@ user1663987: если вы хотите автоматически обновлять, не запрашивая у пользователя учетные данные администратора, как правило, либо вы устанавливаете программу в другом месте (например, Google Chrome устанавливается в папку данных приложения пользователя), либо вы устанавливаете системную службу для выполнения обновлять от вашего имени. –

+0

Точно, как сказал Гарри. Спасибо тебе, Гарри. Я обновил ответ с этим. –