5

我有一台服务器,我在其中使用 java 应用程序处理数据库和文件。当我启动我的应用程序时,我使用以下方式提供有关对服务器的文件访问的报告:

public static boolean folderExists(String folderPath) {
    File folderToCheck = new File(folderPath);
    return folderToCheck.exists();
}

每次我启动我的应用程序(重新启动计算机后)我都会收到错误的响应,即使服务器已打开。原因是我必须以另一个用户身份进行身份验证。我所做的是通过要求我输入用户名/密码的 Windows 访问服务器,然后我得到关于文件访问服务器的真实响应。

有没有办法通过 Java而不是通过 Windows提供身份验证用户名/密码?

谢谢

4

2 回答 2

3

在 Windows 上,“本机”Java IO(例如 java.io.File)总是继承运行 JVM 进程的用户的安全上下文。例如,您可以使用正确的凭据将 Java 应用程序作为 Windows 服务运行。

JCIFS 项目实现CIFS(Windows SMB 文件服务器协议)并允许您直接指定用户名/密码。

有关示例,请参阅API

于 2011-01-19T15:55:45.867 回答
1

我很确定,没有 Windows 调用就无法通过 java 授予文件访问权限。

你可以打电话cacls file.log /e /t /p Everyone:f,但这将取决于语言。

我有一个类似的问题:如果我只知道 SID,如何在 Windows 中更改文件 ACL?

使用 Java7 可能有一种方法可以做到这一点。

于 2011-01-19T12:55:26.557 回答