他のPCの共有ドライブをX:に割り当てています
fname=X:\\Th.rji;
StreamReader sr=new StreamReaderfname,System.Text.Encoding.Default );
while( sr.Peek() != -1 )
{
ss=sr.ReadLine ();
}
sr.Close();
この方法ではTh.rjiをよみとれませんでした
仕方なく BATファイルでいったんD:にコピーしようとしましたが
それもうまくいきません
Process.Start(C:\\copy2d.bat);
ご教授おねがいします
1.ASP.NET から見て、その X ドライブは
存在しないと思いますよ。多分。
こういう「サービス」的動作をするプログラムは特に
UNC パスを使ってファイルアクセスするべきです。
\\server\sharedfolder\file.txt
MS のナレッジベースにはドライブマッピングを
使用する方法も載っていたと思いますが、
なるべく UNC パスを使え、とのこと。
(パフォーマンス的にも)
2.ASP.NET は ASPNET ユーザーアカウントで動作していると思うので
このユーザーが該当ファイルへのアクセス権を
所有している必要があります。
(たしか、ドメインコントローラ上で動作する
ASP.NET の場合は、さらに別アカウント)
3.C# ですよね?
X:\\Th.rji → @X:\Th.rji
C:\\copy2d.bat → @C:\copy2d.bat
が、おすすめ。
共有フォルダにはパスワードが設定してありますが
起動時に自動ログオンする設定となっています
PCは グループ m2group PC名 MYP4 ですが
> \\server\sharedfolder\file.txt
は
@\\MYP4\D:\Th.rji 、
@\\m2group\MYP4\D:\Th.rji
とは違いますよね
なにか具体的な書式例を教えて頂けるとありがたいです
アクセス権は相手側のPCで設定するのでしょうか?
> X:\\Th.rji → @X:\Th.rji
> C:\\copy2d.bat → @C:\copy2d.bat
デバッガが時々勝手変換していたので不思議に思っていました;
>なにか具体的な書式例を教えて頂けるとありがたいです
ここを見てください。
http://www.atmarkit.co.jp/icd/root/91/5787091.html
>アクセス権は相手側のPCで設定するのでしょうか?
その通りです。
アクセスを拒否するのも、許可するのも
アクセスされる側の権利です。
ジャイアンに「うるさい、いいから見せろ!」と言われて
それがまかり通るようなことは、
コンピュータセキュリティではあってはいけないのです。
ありがとうございます
書式は正くなった(と思います)のですが
「ネットワークパスが違います」と拒否されました
アクセス権とネットワークパスは既知であり
OS上のエクスプローラからはアクセスできます
そのアクセス権をC#のプログラムは利用できないのでしょうか?
>そのアクセス権をC#のプログラムは利用できないのでしょうか?
できなくはありません。
・ASP.NET には「偽装」の機能が用意されているので、それを使う。
・WNetAddConnectionXXX() API で明示的にネットワーク資源に接続する。
などの方法があります。
>「ネットワークパスが違います」と拒否されました
まだ間違ってる可能性があるような。
コマンド プロンプト(MS-DOS プロンプト)に
エクスプローラからファイルをD&Dしたときに表示されるものと
同じになってるか確認しましょう。
>OS上のエクスプローラからはアクセスできます
エクスプローラでアクセスするときのアカウントと
ASP.NET が動作するアカウントは別です。
皆さんご意見ありがとうございます
いろいろと試して見ましたが
ASPはセキュリティのせいか、いろいろと制約がありそうです
あるいはC#とは似て非なるも?
外部PGを起動してコピーしようとしましたが
Process.Start も使えないようです
時間がないので外部PGは独自に起動させ連携させて
とりあえず目的を果たしていますが、
ひとまず参考書もまだ少ないようですのでASPアプリは撤退いたします