-1

ある Windows マシンから別の Windows マシンにファイルをコピーする必要があります (ターゲットは仮想マシンです)。通常のユーザーとして実行すると、ファイルは正常にコピーされ、次のようになります。 File f = new File(source); System.out.println(f.exists());

true を出力します。
管理者として cmd を開き、同じプログラムを実行すると、このコードは false` を返します。そして試してみると

java.nio.files.Files.copy(source, target, options);

次の例外が発生しjava.nio.file.NoSuchFileExceptionます...これは、ファイルがあるリモートマシン上のフォルダーが次のようにドライブにマップされている場合です

source = "N:\\..."

理由は何ですか?(または丁重に解決策があります)?

4

2 に答える 2

2

あなたの問題はJavaとはまったく関係ありません.Windowsがさまざまな特権レベルでマップされたネットワークドライブを管理する方法に関連しています.

正確に言うと、昇格したユーザー レベルに切り替えると、ネットワーク ドライブのマッピングが失われます。

これを修正するには、ネットワーク ドライブのリンク接続を有効にする必要があります。EnableLinkedConnectionsWindows 7 を実行している場合: レジストリ エディターで、下に値 1 の名前の DWORD を作成しますHKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System

詳細な説明はこちらにあります: http://www.winability.com/how-to-make-elevated-programs-recognize-network-drives/

于 2015-12-01T18:19:46.547 に答える