- PR -

他マシンへファイルコピー

1
投稿者投稿内容
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2005-09-30 16:40
お世話になっております。


ネットワーク系のプログラミングは
ほとんど無知なので、
アドバイスのほど、宜しくお願いします。

開発環境
Visual Studio .NET 2003 C#


【やりたいこと】
ホスト名、ユーザID、パスワードなどの情報から
他のマシンへアクセスし、
ローカルにあるファイルをそのマシンへコピーする
関数の作成。


Socket、TcpClientなどを読んでいるんですが、
実際どのようにコーディングすればよいか
具体的にわかりません。

ちょっとしたアドバイスでも構わないので、
ご教授のほど宜しくお願いします。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-09-30 19:56
ファイル共有を作成して、ファイルコピー API で UNC 指定じゃダメなの?
まあ、自分でソケット使ってやるというのなら止めはしないけど、汎用を持たせるなら元のファイルのタイムスタンプなども設定したほうが良いということだけ言っておきます。
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2005-10-01 20:18
返信、有難うございます。

引用:

ファイル共有を作成して、ファイルコピー API で UNC 指定じゃダメなの?



正直、自分だけではSocketだけしか思いつかなかったので、
参考になります!

UNCを指定するやり方では、
どのようにマシンへアクセスするんですか?
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-10-01 20:56
引用:

優希さんの書き込み (2005-09-30 16:40) より:
開発環境
Visual Studio .NET 2003 C#


【やりたいこと】
ホスト名、ユーザID、パスワードなどの情報から
他のマシンへアクセスし、
ローカルにあるファイルをそのマシンへコピーする
関数の作成。


DOSコマンドのNet Useで共有リソースにアクセスする。
こことか参考になるかもしれません。
System.IO.File.Copyでコピー。

ではダメでしょうか。

[ メッセージ編集済み 編集者: なおこ(・∀・) 編集日時 2005-10-01 20:57 ]
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2005-10-02 21:36
なおこさん、ありがとうございます。

ご指摘いただいた方法を試してみたいと思います。
追って、結果など書き込みいたします。

また、宜しくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-10-03 05:57
引用:

優希さんの書き込み (2005-10-01 20:18) より:

UNCを指定するやり方では、
どのようにマシンへアクセスするんですか?



¥¥マシン名¥共有名¥それ以下のパス名...
_________________
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-03 09:21
検索のコツ。

  Google 検索

# 正しくは「UNC パス」だと思っていた。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2005-10-04 20:44
一応、目処が立ちましたので、
ご報告いたします。

処理的には以下の処理を行いました。
@リモートPCへの接続
Aファイルコピー
Bネットワークドライブの解除

ソースでは以下のように書きました。

コード:
	System.Diagnostics.ProcessStartInfo psi =
		new System.Diagnostics.ProcessStartInfo();
	//ComSpecのパスを取得する
	psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
	
	//出力を読み取れるようにする
	psi.RedirectStandardInput = false;
	psi.RedirectStandardOutput = true;
	psi.UseShellExecute = false;
	//ウィンドウを表示しないようにする
	psi.CreateNoWindow = true;

	string cmnd = "";
	Process p = null;

	//リモートPCと接続
	cmnd = @"/C NET USE N: \\\\RemoteMachine\\Abc /user:RemoteMachine\\uid pass";
	psi.Arguments = cmnd;
	p = Process.Start(psi);
	//出力を読み取る
	results = p.StandardOutput.ReadToEnd();
	p.WaitForExit();
	
	//ファイルコピー
	File.Copy(@"C:\\work\\AAAAA.txt", @"N:\\BBBBB.txt");

	//リモートPCの解除
	cmnd = @"/C NET USE N: /delete";
	psi.Arguments = cmnd;
	p = Process.Start(psi);
	results = p.StandardOutput.ReadToEnd();
	p.WaitForExit();


(注)上記のソース中のエンマークの表示が変ですが。。


ご回答下さった皆様、
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)