2011-01-19 19 views
3

私はデータベースとJavaアプリケーションを使用してファイルを操作するサーバーを持っています。私にもかかわらず、偽の応答を取得Java - ユーザー認証付きアクセスファイル

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

私は(私のコンピュータの新鮮な再起動後に)私のアプリを起動するたび :私は私のアプリを起動すると は、私が使用してサーバへのファイルアクセスに関する報告書を与えますサーバーはオンです。 私は別のユーザーとして認証を与えなければならないからです。 私は、ユーザ名/パスワードの入力を求められている のサーバからサーバにアクセスします。 とその後、サーバへのファイルアクセスに関する真の応答が得られます。

は、, のJavaで認証ユーザー名とパスワードを入力し、Windowsでは使用できませんか?

は、Windowsコールせずに、JAVAによるのfileaccessを付与する方法がないことを、あなたに私はかなり確信している

答えて

2

Windowsでは、ネイティブのJava IO(例:java.io.File)は、JVMプロセスを実行しているユーザーのセキュリティコンテキストを常に継承します。たとえば、正しい資格情報を持つWindowsサービスとしてJavaアプリを実行できます。

JCIFSプロジェクトはCIFS(Windows SMBファイルサーバープロトコル)を実装しており、ユーザー名/パスワードを直接指定できます。

たとえば、APIを参照してください。

1

ありがとうございます。

cacls file.log /e /t /p Everyone:fに電話をかけることができますが、これは言語に依存します。 Java7でHow to change the file ACL in windows, if I only know the SID?

はこれを行う方法があるかもしれません。

は、私は同様の問題がありました。

+0

シェルコマンドを呼び出すことで実行できますか?それは私と大丈夫です。私はWindowsを使用しています。コマンドはどのようになりますか? –

+1

私はファイルのアクセス権を* cacls * 'cacls file.log/e/t/pと呼びます。Everyone:f':http://support.microsoft.com/kb/318754/enしかし、ユーザログイン「Everyone」は、ローカライズされたウィンドウ上で別の名前を持つことがあります。ドイツ語で翻訳されたウィンドウの場合、呼び出しは 'cacls file.log/e/t/p Jeder:f'でなければなりません –