- - PR -
ファイルのコピーについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-02-05 11:54
いつもお世話になっております。
VB.NETでwebアプリケーションの開発を行っております。 別の端末上の特定のディレクトリにある複数のファイルを ローカルにコピーしようとしているのですが、うまくいきません。 ソースは下記のようにしているのですが、実行すると、 コピー元のファイルが見つからない旨のメッセージが出ます。 (もちろん、ファイルはあります) File.Copy("\\[端末名]\temp\test.txt", c:\test\test.txt, True) 上記でだめだったため、下記のソースでも試したのですが、結果は同じでした。 Dim path As String = "\\[端末名]\temp\test.txt" Dim path2 As String = "c:\test\Test.txt" Dim fi As FileInfo = New FileInfo(path) Dim fi2 As FileInfo = New FileInfo(path2) fi.CopyTo(path2, True) コピー元の端末のディレクトリはEveryoneフルコントロールにしてあります。 過去ログ等を参考にし、machine.configも下記のように変更しました。 <processModel ... userName="system" password="AutoGenerate" ... /> (...の部分は、他の設定が記述されています) userNameを自分のアカウント名にしたところ、プロジェクトそのものが起動できなくなったため、現在はsystemにしています。 ちなみに、コピー元のファイル名が特定できないケースもあるため、 コピー前にDir("\\[端末名]\temp\")も実行してみたのですが、 ファイル名を取得することができませんでした。 端末名をIPアドレスにしてみたり、\を/にしてみたりもしましたが、 現象は変わりませんでした。 ちなみに、windowsアプリなら上記の操作は問題ないのですが、 今回は諸々の事情により、Webアプリで行いたいのです。 まだ何か問題があるのでしょうか? お心当たりの方がいらっしゃいましたら、教えて下さい。 宜しくお願い致します。 | ||||
|
投稿日時: 2004-02-05 12:36
これはNTFSのセキュリティ設定ですか? 共有のセキュリティ設定ですか? この場合、NTFSセキュリティ設定、共有セキュリティ設定の両方とも必要です。 [ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-02-05 12:37 ] | ||||
|
投稿日時: 2004-02-05 13:06
ぢゃんさん、回答ありがとうございます。
セキュリティの設定は両方ともEveryoneフルコントロールになっています。 あまり意味はないと思うのですが、念のため、自分のアカウントとASPNET、 systemも追加してみましたが、現象は変わりません。 他に何かお気づきの点がありましたら、教えて下さい。 宜しくお願い致します。 | ||||
|
投稿日時: 2004-02-05 13:56
そうすると、コードアクセスセキュリティですかね……。
.NET Framework 1.1からの機能ですが、私も詳しくはないです。 (machine.configでtrustLevelとかの設定があります。) | ||||
|
投稿日時: 2004-02-05 14:35
るぱんです。
File.Copy("\\[端末名]\temp\test.txt", c:\test\test.txt, True) "\\[端末名]\temp\test.txt"←このファイル見れてますか? File.Copy("\\[端末名]\temp\test.txt", "\\[端末名]\temp\test1.txt", True) File.Copy(c:\test\test.txt, c:\test\test1.txt, True) 試してみてください。 | ||||
|
投稿日時: 2004-02-05 14:42
ぢゃんさん、ありがとうございます。
machine.configを確認したところ、下記のようになっていました。 <system.web> <securityPolicy> <trustLevel name="Full" policyFile="internal"/> <trustLevel name="High" policyFile="web_hightrust.config"/> <trustLevel name="Medium" policyFile="web_mediumtrust.config"/> <trustLevel name="Low" policyFile="web_lowtrust.config"/> <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/> </securityPolicy> <!-- level="[Full|High|Medium|Low|Minimal]" --> <trust level="Full" originUrl=""/> </system.web> いろいろ調べて、下記の方法も試してみました。 Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" ( _ ByVal SrcFile As String, _ ByVal DestFile As String, _ ByVal Exists As Long) As Long ret = CopyFile("//[端末名(またはIPアドレス]/temp/test.txt", "c:/test/test.txt", False) 上記の方法でもコピーはされませんでした。 もしかして、この方法ではコピーできないのでしょうか? | ||||
|
投稿日時: 2004-02-05 14:52
るぱんさん、回答ありがとうございます。
Dir("\\[端末名]\temp\")で確認しましたが、ファイル名は取得できませんでした。 webアプリ以外なら問題無くファイル名を取得できます。 コピー元は共有ディレクトリにしているので、エクスプローラなどでも問題ありません。 コピー先の共有フォルダをネットワークドライブ(x:)として設定し、 端末名(またはIPアドレス)で指定している部分をx:\で指定もしてみましたが、 上手くいきませんでした。 ローカルのフォルダ間なら今までのどの処理でも問題ありません。 | ||||
|
投稿日時: 2004-02-05 15:48
るぱんです。
バッチファイルかEXEなんですかねぇ・・・? ファイルをマシン外からコピーして来る手段・・・。うぅむ。。。 ネットワーク管理者から苦情がでかねない!?(汗) |