【发布时间】:2012-06-29 11:42:59
【问题描述】:
我们正在使用 install4j 为 Windows 打包 Java 7 应用程序。我们遇到的问题是,在我的 Windows 7 计算机上,我需要以管理员身份运行已安装的应用程序才能正常工作。它在需要访问磁盘的地方失败。如果我以管理员身份运行它,那么它工作正常。
有没有办法解决这个问题?我使用了与 install4j 和访问磁盘一起打包的其他应用程序,我不需要以管理员身份运行,所以我怀疑我想要的是可能的。
提前谢谢你。
【问题讨论】:
-
你的应用程序是做什么的?这个问题的答案对于解决您的问题至关重要。您的应用程序是否写入受系统保护的文件夹,例如 Program Files?如果是,则修改应用程序以将其数据存储在普通用户可以访问的位置。常规应用程序不需要管理员权限即可访问磁盘上的文件。
-
Alexey,是的,我的应用程序写入程序文件。我得找个地方写信。是否有定义我可以写入的目录的系统属性?
-
向
Program Files写信已经被劝阻很久了,但是直到Vista 引入UAC 之前没人真正关心过。在哪里写入取决于数据的性质。在 Windows 中,您可以将应用程序数据存储在用户配置文件AppData目录中。如果数据应该由多个用户访问,ProgramData是更好的选择。 Windows 有获取这些位置路径的 API,而 Java 没有。如果数据是临时的,Temp目录是正确的选择。要保存首选项,请使用Preferences 类。 -
顺便说一句,它看起来对
AppData的引用存储在APPDATA环境变量中用于漫游数据,LOCALAPPDATA用于仅本地设置;在ProgramData中进行机器本地设置。我不确定这些变量在每个 Windows 系统上是否一致设置。查看this answer 了解有关 Win API 的更多信息。 -
再次非常感谢。我注册了你的博客。
标签: java installation install4j