Java应用程序在放入程序文件时需要管理员访问才能运行

Java应用程序在放入程序文件时需要管理员访问才能运行,java,javafx,launch4j,Java,Javafx,Launch4j,我正在开发一个Java(JavaFX)桌面应用程序。我正在使用launch4j工具将其转换为exe,然后使用Inno setup Compiler创建安装程序包(默认安装路径设置为C:\Program Files(x86)) 应用程序本身不需要任何管理员权限,当我在桌面上复制exe或在C以外的驱动器上运行它时,它可以正常运行。(如果我在本地appdata文件夹中运行它,也可以正常运行) 但是我需要把它放在ProgramFiles(x86)目录中。 如果我将应用程序安装到该目录中,它将不会打开,因

我正在开发一个Java(JavaFX)桌面应用程序。我正在使用launch4j工具将其转换为exe,然后使用Inno setup Compiler创建安装程序包(默认安装路径设置为C:\Program Files(x86)) 应用程序本身不需要任何管理员权限,当我在桌面上复制exe或在C以外的驱动器上运行它时,它可以正常运行。(如果我在本地appdata文件夹中运行它,也可以正常运行) 但是我需要把它放在ProgramFiles(x86)目录中。 如果我将应用程序安装到该目录中,它将不会打开,因此我必须为launch4j创建一个清单文件,以便每次打开时它都请求管理员访问。这样做很好,但在这种情况下,每次都会询问管理员访问权限

我需要让这个应用程序运行,而不要求管理员每次访问。 如果有什么解决办法,请指导我。
任何帮助都将不胜感激。

好的,所以我有点明白了。我猜jar在读取系统目录时遇到了问题,我不得不对配置文件执行一些读/写操作。因此,我将配置路径更改为:

String path = Controller.class.getProtectionDomain().getCodeSource().getLocation().getPath() + "\\Data\\";
现在,它在jar文件中创建了一个名为“Data”的文件夹,并从中读/写。我不知道这是不是一个坏的做法,但它似乎对我很好的工作


非常感谢@user31601,他给了我一些提示,帮助我找到了这个解决方案。

你的程序在做什么?它是否尝试在任何地方读取/写入文件?@user31601是。它正在从%APPDATA%目录读取一个文件,该目录实际上是APPDATA/漫游目录。谢谢@user31601。我将应用程序数据的位置更改为本地jar的路径,现在它也在“ProgramFiles(x86)”文件夹中工作。您可以将您的解决方案作为答案发布,我会批准:)没关系-我只是“四处询问问题”。我不会说我提出了一个完整的解决方案。很高兴你把它修好了!如果你愿意,自己写解决方案,仅供他人参考。