java - 你能确定 Vista UAC 是否允许在没有提升的情况下写入 java 中的目录吗?

标签 java windows-vista uac

这是场景。我有一个在其目录 (user.dir) 中写入配置文件的应用程序。当用户由于 UAC 问题无法写入该目录时,我想将其更改为写入 user.home/.appname/。问题是 Windows 确实欺骗了我的应用程序并写入了 Program Files 目录中的 user.dir,但是尽管它允许写入和读取(即使在重新启动后)但它不存储它在那里,它将它存储在一个隐藏目录中(主目录/AppData/Local/VirtualStore/Program Files/appname),使用户很难/不可能找到他们是否想编辑该文件。

但是,我不想只更改我的应用程序以写入 user.home 并完成它,因为有些用户从 USB 驱动器运行应用程序,此时我想要如果 user.dir 可用,请使用它,因为在那种情况下(在 guest 计算机上),在用户主目录周围留下一些东西是没有帮助的。

那么在那个相当冗长的背景之后,是否有一种方法可以从 java 中知道本地目录是否真的可以直接从 Java 中写入,或者 vista 是否将虚拟化目录写入到另一个位置?

最佳答案

如果 Java 可执行文件未标记为 Vista 兼容(使用 list ),则会出现此问题。 Sun 的当前版本被标记为兼容。所以最简单的解决方案是使用最新版本。这意味着现在文件和注册表项都没有被虚拟化。


OP 作者编辑:

Java 6 Update 10 (错误 6722527)将 list 添加到相关文件中。错误 6737858解决了进一步的问题,并在版本 12 中记录为已修复,尽管它不在发行说明中。对于 JDK 1.5,安装程序已修复 Update 11 ,但是 Sun 不会向 exe 添加任何 list 。如果它足够重要,您可以通过将 list 文件放在与 exe 相同的目录中来自己添加一个。

关于java - 你能确定 Vista UAC 是否允许在没有提升的情况下写入 java 中的目录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1805960/

相关文章:

java - Assets 不会在 spring 4.1.7 中加载

java - ArrayList 给出空指针异常

vb.net - 如何在VISTA中调出嵌入在windows.forms.webbrowser控件中的PDF

c++ - 在 Vista 上对 winsock send() 函数的阻塞调用是否有任何理由立即返回?

.net - 如何获得受信任/经过验证的发布者?

java - 手上所有牌都一样

java - 在测试中模拟一个 Logger 类

windows - 如何在 Windows 中更改 Maven 存储库文件夹?

c# - 静默安装 SQL Server 2008 服务包时抑制 UAC 帐户设置窗口

java - 如何从 Java 提升我的 UAC 权限?