我有一个服务器,我使用java应用程序处理数据库和文件。 当我启动我的应用程序时,我使用以下命令提供有关服务器文件访问权限的报告:
public static boolean folderExists(String folderPath) {
File folderToCheck = new File(folderPath);
return folderToCheck.exists();
}
每次启动我的应用程序(重新启动计算机后) 即使服务器已启用,我也会得到错误的响应。 原因是因为我必须以另一个用户身份进行身份验证。 我所做的是通过Windows访问服务器 在那里我被要求输入用户名/密码, 之后我得到了关于服务器文件访问的真实回复。
有没有办法通过Java提供身份验证用户名/密码, 而不是通过Windows?
谢谢
答案 0 :(得分:2)
在Windows上,“本机”Java IO(例如java.io.File)始终继承运行JVM进程的用户的安全上下文。例如,您可以使用正确的凭据将Java应用程序作为Windows服务运行。
JCIFS项目实现CIFS(Windows SMB文件服务器协议),并允许您直接指定用户名/密码。
有关示例,请参阅API。
答案 1 :(得分:1)
我很确定,没有Windows-Call就无法通过java授予fileaccess。
您可以拨打cacls file.log /e /t /p Everyone:f
,但这将取决于语言。
我遇到了类似的问题:How to change the file ACL in windows, if I only know the SID?
使用Java7可能有办法做到这一点。