gpt4 book ai didi

java - 使用 JNA 设置 ProgramData 子文件夹的写入权限

转载 作者:可可西里 更新时间:2023-11-01 10:50:31 25 4
gpt4 key购买 nike

我有一个用 Java 编写的程序,它最初使用它在 Program Files 中的目录来编写该程序的所有用户都可以访问的文件。这要求我们的用户始终以管理员身份运行。为了缓解这种情况,我们决定使用 %ALLUSERSPROFILE% 环境变量将需要在常规使用期间写入的文件移动到 ProgramData 文件夹。如果在安装过程中将此目录中的子文件夹指定为可写,则将此目录中的子文件夹用于我们的应用程序效果很好,这在使用 NSIS 时效果很好。

问题来自升级现有用户。 Java 文件 API 提供了 setWritable 但在开发机器上测试后这似乎不起作用。 Java 7 的新文件 API 似乎可以解决这个问题,但由于没有发布日期,我宁愿等不及了。

看起来最简单的解决方案是使用 JNA 调用适当的 Windows API 调用以将此目录设置为可写。由于升级软件需要管理员权限,类似于安装,它应该让这个变化顺利进行。但是,我不确定从哪里开始,之前从未使用过 JNA 或 Windows API。关于加载哪个 Windows 库和调用哪些函数的建议将不胜感激,特别是如果有人以前遇到过类似的问题。

最佳答案

很高兴您提供了一些背景知识...您可以使用 JNA,但更简单的方法是执行对命令行实用程序 cacls 的调用。它默认包含在 Windows XP 安装中,我相信,所以它应该可以为您解决问题。试试 Runtime.getRuntime().exec("C:\\Windows\\System32\\cacls.exe"+options)

在此处查看文档 -> http://technet.microsoft.com/en-us/library/bb490872.aspx

关于java - 使用 JNA 设置 ProgramData 子文件夹的写入权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com